반응형
백준 알고리즘 - 2577번 숫자의 개수 문제입니다.
(참고 - https://www.acmicpc.net/problem/2577 )
코드 )
int main() {
int i, a, j, total=1;
int buf[10];
for(i = 0; i < 10; i++) {
buf[i] = 0;
}
for(i = 0; i < 3; i++) {
scanf("%d", &a);
total *= a;
}
for(i = 0; total > 0; i++) {
a = total % 10;
buf[a] += 1;
total /= 10;
}
for(i = 0; i < 10; i++) {
printf("%d\n", buf[i]);
}
}
- 먼저 for문을 통해 배열 buf를 0으로 초기화 해줍니다. (2563번에서 했듯이, 배열을 전역변수로 선언해도 0으로 자동 초기화할 수 있습니다.) 이 배열 buf는 0~10사이의 각각의 수에 대해 카운트하기 위해 사용될 것입니다.
그 후 3개의 수를 입력받아 total에 곱한 값을 누적하여 저장해줍니다.
total의 값이 0보다 큰 동안 반복합니다. total을 10으로 나눈 나머지의 값을 인덱스로 삼아 배열 buf의 a인덱스에 해당하는 위치에 1을 더해줍니다. total을 10으로 나눈 나머지가 a이므로, a는 0~9사이의 값이 될 수 밖에 없습니다.
그 후, total은 10을 나눠줍니다.
이렇게 계산한 뒤, 최종적으로 buf에 저장된 값들을 출력해주면 됩니다.
반응형
'Programming > Algorithm' 카테고리의 다른 글
백준 알고리즘 - 10798번 : 세로읽기 (0) | 2016.05.14 |
---|---|
백준 알고리즘 - 9012번 : 괄호 (0) | 2016.05.14 |
백준 알고리즘 - 2563번 : 색종이 (0) | 2016.05.14 |
백준 알고리즘 - 2525번 : 오븐 시계 (0) | 2016.05.14 |
백준 알고리즘 - 2506번 : 점수계산 (0) | 2016.05.14 |
WRITTEN BY
,