K_blueprint
#2588 - 곱셈 본문
728x90
반응형
#include<iostream>
using namespace std;
int main()
{
int A;
char B[4];
cin >> A;
cin >> B;
cout << A * (B[2] - '0') << "\n";
cout << A * (B[1] - '0') << "\n";
cout << A * (B[0] - '0') << "\n";
cout << A * atoi(B) << "\n";
return 0;
}
코드분석
1. 정수형 바료형으로 A에 값을 입력받고 문자열 자료형으로 B를 배열로 받음(3자리수 각각 분할하여 연산하기 위해서)
2. 사용자로부터 A와 B에 값을 입력받는다.
3. 문제의 "예제"처럼 472*385의 연산을 수행한 결과를 "예제출력"과 같게 하기 위해서는
- 472 * 5
- 472 * 8
- 472 * 3
- 472 * 385
의 순서로 연산을 하면 되는데 문자열로 B[4]에 값을 받았기 때문에 우리는 숫자를 입력했지만 컴퓨터는 문자로 인식하여 출력한다, 즉 해당 수의 아스키코드로 출력을 하게 됨(아래 코드표 참고) 따라서 B[4]에 385를 입력하게 되면 B[0]에 3이 아닌 3의 아스키코드인 83이 출력된다고 생각하면 될 것 같다.
결과적으로 B[4]의 각각의 공간 B[0], B[1], B[2]에 '0'(숫자가 아닌 문자 0)을 빼주면 원하는 값이 출력됨.
4. B를 B[3]이 아닌 B[4]로 받은 이유는 마지막에는 분할된 값이 아닌 온전한 값을 곱해줘야 하기 때문에 입력받은 문자열을 숫자로 바꿔주는 함수인 atoi()함수를 이용하여 385라는 수를 곱해주기 위해서이다.
atoi라는 함수를 이번에 처음 알았는데 신박했다..
심지어 그냥 배열문제인 줄 알았는데 아스키코드를 이용할 줄은 상상도 못 했네
728x90
반응형
'Baekjoon 회고노트' 카테고리의 다른 글
#25314 - 코딩은 체육과목 입니다. (0) | 2024.07.26 |
---|---|
#10950 - A+B -3 (2) | 2024.07.24 |
#2525 - 오븐 시계 (2) | 2023.09.18 |
#2884 - 알람 시계 (0) | 2023.09.18 |
#1008 - A/B (2) | 2023.09.14 |