2577
2577번 문제#include
int main(void) {
int a, b, c, num, n, list[11] = {0,}; // 입력 받아야 할 숫자 3개, 모두 곱한 값, 나머지, 0-9까지 개수를 담을 배열
scanf("%d %d %d", &a, &b, &c); // 숫자들을 입력 받는다
num = a * b * c;
do {
n = num % 10; // 10으로 나눠서 나머지를 구한다
list[n]++; // 나머지 값이 곧 배열 인덱스이므로 개수를 하나 추가한다
} while ((num /= 10) != 0); // 처음 곱한 값을 계속 10으로 나눴을 때 몫이 0이 되기 전까지만 진행한다
for (n = 0; n < 10; n++)
printf("%d\n", list[n]); // 출력
}
결과
숫자를 입력 받고 그와 관련된 개수를 세는 문제이므로 숫자를 배열 인덱스와 연관지어서 풀 수 있을지 생각해보았다. num을 한 자릿수마다 나눠서 생각하면 한 자릿수 값이 곧 배열의 인덱스가 되므로 한 자릿수로 나누는 것이 핵심이었다. num의 자릿수와 상관없이 개수를 세면 되므로 자릿수가 10으로 나눴을 때 나머지를 구하는 것으로 한 자릿수를 구하기로 하였다.
'문제풀이 > C 문제풀이' 카테고리의 다른 글
2920 + getchar + 배열 비교 (0) | 2019.02.28 |
---|---|
8958 + sizeof/strlen +char/int형 선언 (0) | 2019.02.28 |
1152 (0) | 2019.02.24 |
2941 (0) | 2019.02.17 |
5622 (0) | 2019.02.16 |