본문 바로가기

백준 문제 풀이/c언어

백준 2577 C언어 문제 풀이 - 숫자의 개수


문제 링크: https://www.acmicpc.net/problem/2577

문제 요약

세 개의 자연수 A, B, C가 주어집니다. 이때 A x B x C를 계산한 결과에서 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 문제입니다.

문제 해결 방법

이 문제를 해결하기 위해서는 우선 A x B x C를 계산한 결과를 구해야 합니다. 그 다음에는 각 숫자가 몇 번 쓰였는지를 구하기 위해 각 자리수를 분리하고 그 자리수가 몇 번 나타나는지를 세어주어야 합니다.

여기서 주의해야 할 점은 A, B, C가 100 미만의 자연수라는 점입니다. 따라서 A x B x C는 최대 1,000,000이 되므로 그 자리수는 최대 6자리가 됩니다. 이를 고려하여 변수를 선언해줘야 합니다.

이제 문제를 해결하는 코드를 작성해보겠습니다.

#include <stdio.h>

int main()
{
    int a, b, c;
    int result;
    int count[10] = {0, };
    int i;

    scanf("%d %d %d", &a, &b, &c);

    result = a * b * c;

    while(result > 0)
    {
        count[result % 10]++;
        result /= 10;
    }

    for(i = 0; i < 10; i++)
    {
        printf("%d\n", count[i]);
    }

    return 0;
}



먼저 입력 받을 변수 a, b, c를 선언해줍니다. 그리고 A x B x C의 결과를 저장할 변수 result도 선언해줍니다. 그리고 각 숫자가 몇 번 쓰였는지를 세어줄 배열 count를 선언해줍니다. 이 배열은 0으로 초기화해주는 것이 좋습니다. 그리고 반복문에서 사용할 변수 i도 선언해줍니다.

scanf 함수를 이용하여 a, b, c를 입력 받습니다. 그리고 A x B x C의 결과인 result를 계산해줍니다.

이제 while 문을 이용하여 result의 각 자리수를 분리하고, count 배열에서 그 자리수에 해당하는 인덱스의 값을 1 증가시켜줍니다. 이렇게 하면 각 숫자가 몇 번 쓰였는지를 count 배열에 저장할 수 있습니다.

마지막으로 for 문을 이용하여 count 배열에 저장된 값을 출력해줍니다. 각 숫자가 몇 번 쓰였는지 출력합니다.