K_blueprint

#2588 - 곱셈 본문

Baekjoon 회고노트

#2588 - 곱셈

GODAGO 2023. 8. 30. 00:56
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