문제 링크

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

풀이

#include <stdio.h>

int main() {
    int a, b, c;
    int arr[10] = {0, };
    scanf("%d %d %d", &a, &b, &c);
    int n = a*b*c;
    
    int num;
    while(n>0) {
        num = n%10;
        arr[num]++;
        n /= 10;
    }
    
    for(int i=0; i<10; i++) {
        printf("%d\n", arr[i]);
    }
    
    return 0;
}

정수를 자릿수에 따라 쪼개야할 때는 10으로 나눗셈/나머지연산을 하면 간단하게 처리할 수 있다.

배열 arr은 while문에서 값을 새로 할당하는 것이 아니라 원래 값을 증가시키기 때문에(증감 연산자 사용)

선언할 때 0으로 초기화를 해두어야한다. 

 

배열 0으로 초기화하기 : https://dojang.io/mod/page/view.php?id=294

(C언어 코딩 도장 36.2 배열을 0으로 초기화하기)

 

+ Recent posts