[백준] 2588 곱셈 문제풀이
문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
예제 입력 1
472
385
예제 출력 1
2360
3776
1416
181720
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a, b, b100, b10, b1;
scanf("%d %d",&a, &b);
b100 = b / 100; //3
b10 = (b % 100) / 10; //8
b1 = (b % 100) % 10; // 5
printf("%d\n", a*b1);
printf("%d\n", a*b10);
printf("%d\n", a*b100);
printf("%d\n", a*b);
return 0;
}
💁♂️풀이
사칙연산을 컴퓨터의 언어로 해석한 것이다.
먼저 가장 우선적으로 이해 해야 할 것은(1)에 해당하는 472는 (2)의 100의자리 10의자리 5의 자리와 곱할 때 고정적으로 사용하므로 건들필요가 없다.
그럼 이제 scanf로 385라는 값을 받고 3 , 8 , 5 각각의 숫자로 나눌 방법을 생각해보자.
💁♂️(3)의 과정
int형 b(385)를 100으로 나누면 나머지를 제외한 몫인 3이 남게된다.
그걸 b100에 저장하면 b100 = b / 100; 이라는 식을 만들 수 있다.
💁♂️(4)의 과정
b / 100와 반대로 b % 100를 하면 몫이 아닌 나머지가 나온다. (85)
그 값(85)에서 10으로 나누면 몫인 8이나오게 된다.
그걸 b10에 저장하면 b10 = (b / 100) % 10; 이라는 식을 만들 수 있다.
💁♂️(5)의 과정
b / 100와 반대로 b % 100를 하면 몫이 아닌 나머지가 나온다. (85)
그 값(85)에서 10으로 나누면 나머지인 5가 나오게 된다.
그걸 b1에 저장하면 b1 = (b % 100) % 10; 이라는 식을 만들 수 있다.