본문 바로가기

C언어/백준

[C언어] 백준 2588 풀이

백준 2588
알고리즘 분류 : 수학, 사칙연산

문제.
(세 자리 수) ×(세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과(2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력
첫째 줄에(1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에(2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로(3), (4), (5), (6)에 들어갈 값을 출력한다.

 

내 풀이

문제 이해
곱셈할 때 차례차례 곱해져서 더해지는 것들을, 부분부분 씩 먼저 출력하는 것.
세 자리수의 곱셈은

첫번째 입력받은 수와, 그 다음에 입력받은 수의 가장 끝자리를 곱하고
그 다음엔 두번째 자리와 곱하고 
그 다음엔 세번째 자리와 곱한 후
그리고 그것들의 합을 구하면 된다

 

첫번째 입력받은 수를 122, 두번째 입력받은 수를 243 이라고 하면

122*3 + 122*40 + 122* 200 의 값이 두 수의 곱인데

여기서는, 곱셈 식을 세로로 계산할 때 들어가는 숫자들만 구하라했므로 (한마디로 자리수 표기 X) 

122*3, 122*4, 122*2 의 값을 구하면됨.

문제 분석
1. 두 정수 A,B 입력 받기 (정수 변수 선언)

 

2. B의 일의 자리 자연수, 십의 자리 자연수, 백의 자리 자연수 구하기

 

ㅡ1의 자리 자연수 구하는 식: B - (B/10)*10        

(B - (B를 10으로 나눴을 때의 몫 * 10))

 

ㅡ10의 자리 자연수 구하는 식: (B/10) - (B/100)*10  

(B를 10으로 나눴을 때의 몫 - B를 100으로 나눴을 때의 몫에서 10을 곱한 값.)

 

ㅡ100의 자리 자연수 구하는 식: B/100  (B를 100으로 나눴을 때의 몫.) 

 

3.  코딩 식 세우기
(첫번째 수 * 두번째 수 끝자리) 출력
(첫번째 수 * 두번째 수 십의 자리) 출력
(첫번째 수 * 두번 째 수 백의 자리) 출력
(위의 값들을 모두 합 한 값, 즉 곱셈의 결과) 출력

 

 

구현

int main(void) {
	int a, b;
	scanf("%d%d", &a, &b);

	printf("%d\n", a*(b-10*(b/10)));
	printf("%d\n", a*((b/10)-((b/100)*10))); 
	printf("%d\n", a*(b/100));
	printf("%d\n", a*b);
}

 

검산

코딩을 하기 전, 어떻게 식을 세울 것인지 하나하나 따져서 분석한 후 한 줄 한줄 코딩하기. 머릿속으로 한번에 코딩하면서 짜내려가지 말 것.

'C언어 > 백준' 카테고리의 다른 글

[C언어] 백준 1330번 풀이「두 수 비교하기」  (0) 2023.03.03
[C언어] 백준 11382 풀이  (0) 2023.02.21
[C언어] 백준 10430 풀이  (0) 2023.02.21
[C언어] 백준 3003 풀이  (0) 2023.02.19
[C언어] 백준 18108 풀이  (0) 2023.02.19