[백준] 문제풀이

[백준] 2588 곱셈 문제풀이

FluanceiFi 2023. 11. 20. 01:30

문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(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; 이라는 식을 만들 수 있다.