백준 알고리즘 - 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에 저장된 값들을 출력해주면 됩니다.


WRITTEN BY
SiriusJ

,