본문 바로가기
Study (etc)/Problem Solving

[BOJ / C] 2577번 : 숫자의 개수

by Haren 2019. 5. 20.

<백준 온라인 저지 : 2577번>

- 숫자의 개수 -






문제설명







이 문제를 풀며


- 세자리수 곱셈의 결과는 정수형의 범위 내에서 충분히 해결할 수 있다.


- 곱한 결과를 % 10 연산을 하게 되면 일의 자리의 수를 구할 수 있고, 해당 일의 자리 숫자를 카운트 한 뒤, 원래의 값을 10으로 계속 나눠주어 자릿수를 줄여나간다.


- 0에서 9까지의 수의 개수를 카운트 해야 하는데 이는 배열의 인덱스와 정확히 일치한다. 그러므로 배열[일의 자리 수]로 인덱싱하여 해당 배열 요소의 값을 1씩 증가시킨다.


- 자세한 것은 소스코드 참고.





내 소스



#include <stdio.h> int main() { int input; int mul=1, result = 0; int cnt[10] = { 0, }; for (int i = 0; i < 3; i++) { scanf("%d", &input); mul *= input; } for (int i = 0; mul > 0; i++) { result = mul % 10; //일의 자리의 수를 result에 저장 cnt[result] += 1; //배열[일의 자리의 수] 를 +1 mul /= 10; //원래의 값의 자릿수를 줄임. } for (int i = 0; i < 10; i++) printf("%d\n", cnt[i]); return 0; }






채점 결과