- 생각할 것
- result = A * B * C 로 정의
- result를 10으로 나눈 몫과 나머지를 이용
- 세 자리 수의 곱이므로 최대 999 * 999 * 999를 연산했을 시 result가 997,002,999 이므로,
배열 arr의 크기를 10으로 정의하고 각각 {0}으로 초기화 해놓기
ex) 150, 266, 427 입력 시, result=17037300
result = result / 10 을 반복, result % 10을 반복하면 맨 마지막 숫자부터 각각 몇 개인지 셀 수 있음
result = 17037300 / 10 = 1703730 | arr[17037300 % 10] -> arr[0] | arr[0]의 개수 증가 / arr[0]=1 |
result = 1703730 / 10 = 170373 | arr[1703730 % 10] -> arr[0] | arr[0]의 개수 증가 / arr[0]=2 |
result = 170373 / 10 = 17037 | arr[170373 % 10] -> arr[3] | arr[3]의 개수 증가 / arr[3]=1 |
result = 17037 / 10 = 1703 | arr[17037 % 10] -> arr[7] | arr[7]의 개수 증가 / arr[7]=1 |
result = 1703 / 10 = 170 | arr[1703 % 10] -> arr[3] | arr[3]의 개수 증가 / arr[3]=2 |
result = 170 / 10 = 17 | arr[170 % 10] -> arr[0] | arr[0]의 개수 증가 / arr[0]=3 |
result = 17 / 10 = 1 | arr[17 % 10] -> arr[7] | arr[7]의 개수 증가 / arr[7]=2 |
result = 1 / 10 = 0 | arr[1 % 10] -> arr[1] | arr[1]의 개수 증가 / arr[1]=1 |
result가 0이면 반복 중단
나머지 배열의 각 개수는 0으로 초기화 되어있으므로,
arr[0] = 3 -> 0의 개수 3
arr[1] = 1 -> 1의 개수 1
arr[2] = 0 -> 2의 개수 0
arr[3] = 2 -> 3의 개수 2
arr[4] = 0 -> 4의 개수 0
arr[5] = 0 -> 5의 개수 0
arr[6] = 0 -> 6의 개수 0
arr[7] = 2 -> 7의 개수 2
arr[8] = 0 -> 8의 개수 0
arr[9] = 0 -> 9의 개수 0
- 코드
#include<stdio.h>
int main() {
int A, B, C;
int arr[10] = { 0 };
scanf("%d", &A);
scanf("%d", &B);
scanf("%d", &C);
int result = A * B * C;
while (result != 0) {
arr[result % 10]++;
result /= 10;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", arr[i]);
}
}
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #4344_평균은 넘겠지_c+ (0) | 2021.10.25 |
---|---|
baekjoon #8958_OX퀴즈_c++ (0) | 2021.10.25 |
baekjoon #10818_최소, 최대_c++ (0) | 2021.10.24 |
baekjoon #10951_A+B - 4_c++ (0) | 2021.10.24 |
baekjoon #2439_별 찍기 - 2_c++ (0) | 2021.10.24 |