숫자의 개수

문제 링크

숫자의 개수

분석

입력으로 주어지는 값 A, B, C를 모두 곱한뒤, 해당 결과값에서 각 숫자가 몇 번씩 등장하는지 세어준 후 출력하는 문제입니다.

곱한 결과 값에서 한 자리씩 확인하여 어떤 숫자가 있는지 확인해주면 됩니다.
이때, 나머지 연산자와 나누기 연산자를 사용하면 한 자릿수씩 확인할 수 있습니다.

풀이

#include <stdio.h>

int main()
{
    // 0부터 9까지 각 숫자의 등장 횟수를 관리
    int Nums[10] = { 0 };

    // 입력으로 주어지는 3개의 값
    int A, B, C;

    scanf("%d %d %d", &A, &B, &C);

    // 3개 값에 대한 곱을 계산한다.
    int MultiplyNum = A * B * C;

    // 곱한 결과의 각 자릿수를 분해하여 숫자 등장 횟수를 카운트
    while (MultiplyNum != 0)
    {
        int TargetIndex = (MultiplyNum % 10);
        ++Nums[TargetIndex];

        MultiplyNum /= 10;
    }

    // 숫자가 등장한 횟수를 출력한다.
    for (int i = 0; i < 10; ++i)
    {
        printf("%d\n", Nums[i]);
    }

    return 0;
}

성능 요약

시간 복잡도는 $O(d)$입니다.

  • 자릿수만큼 반복되는 반복문 $O(d)$
    • d는 자릿수만큼 반복되는 횟수를 의미합니다.
  • 결과를 출력하는 반복문 $O(1)$

공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.

메모리: 1112 KB

시간: 0 ms

Date:     Updated:

카테고리:

태그:

Baekjoon 카테고리 내 다른 글 보러가기

댓글남기기