[백준][C] 2577번 숫자의 개수
숫자의 개수
문제 링크
분석
입력으로 주어지는 값 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
댓글남기기