입력 코드
#include <stdio.h>
main() {
int A, B, C;
scanf("%d %d %d", &A, &B, &C);
int num, rest, i;
int count[10] = { 0, };
num = A*B*C;
while (num >0) {
rest = num % 10;
num = num / 10;
count[rest]++;
}
for (i = 0; i < 10; i++) {
printf("%d\n", count[i]);
}
}
코드 설명
배열과 수학을 이용하는 문제
#include <stdio.h>
main() {
int A, B, C;
scanf("%d", &A);
scanf("%d", &B);
scanf("%d", &C);
char num[];
num = A*B*C;
int i=0,j;
char count[11];
while (num != '\0') {
for (j = 0; j < 10; j++) {
if (num[i] == j)
count[j]++;
}
i++;
}
printf("%d\n", count[j]);
}
처음에는 이렇게 했지만 num 배열에 숫자 하나씩 들어가는 게 아니었다.
#include <stdio.h>
main() {
int A, B, C;
scanf("%d %d %d", &A, &B, &C);
int num, rest, i;
int count[10] = { 0, };
num = A*B*C;
while (num >0) {
rest = num % 10;
num = num / 10;
count[rest]++;
}
for (i = 0; i < 10; i++) {
printf("%d\n", count[i]);
}
}
어차피 1-9까지 숫자가 몇 번 쓰였는지 세는 거여서 숫자가 그대로 들어가지 않고 거꾸로 들어가도 된다. 10으로 나누면 그 나머지가 1의 자리 수고, 다시 10으로 또 나누면 그 나머지가 10의 자리 수가 된다. 이걸 계속 반복해서 배열에 넣으면 되는 거였다.
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#25. [백준_C언어] 1546 : 평균 (0) | 2021.01.12 |
---|---|
#24. [백준_C언어] 3052 : 나머지 (0) | 2021.01.11 |
#22. [백준_C언어] 1110 : 더하기 사이클 (0) | 2021.01.09 |
#21. [백준_C언어] 11050 : 이항 계수 1 (0) | 2021.01.09 |
#20. [백준_C언어] 10250 : ACM 호텔 (0) | 2021.01.08 |