문제
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
문제풀이
#include <stdio.h>
#pragma warning(disable:4996)
int main(void)
{
int A, B, C;
int sum;
int arr[10] = { 0, }; // 각 숫자에 대한 배열 만들기. 총 10개.
int num;
scanf("%d %d %d", &A, &B, &C);
sum = A * B * C;
while (sum > 0)
{
num = sum % 10; // 10으로 나누었을 때 나머지, 현재 1의 자리 숫자
arr[num]++;
sum /= 10; // 10으로 나누어 값을 다음번 숫자 자리로 간다.
}
for (int i = 0; i <= 9; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
- 각 자릿수의 숫자를 배열에 담고, 중복되는 경우 숫자를 늘려나가는 배열을 만든다.
- 배열 내 인자를 하나씩 출력함으로써 각 숫자의 개수를 알 수 있다.
- while (sum>0) 조건을 이용하여 숫자가 0이 될 때까지 나누게끔 작성하였다.
- num = sum % 10으로 1의 자리 숫자를 num에 넣어 값을 구했다.
- arr[num]을 통해 num번 인덱스에 값이 담기도록 하였다. 예를 들어 num이 3인경우 3번 인덱스
- sum /= 10을 통해 그 다음 자리수로 넘어간다.
'C C++ > C C++ 백준' 카테고리의 다른 글
C언어 백준 1000번 A+B (0) | 2022.05.05 |
---|---|
C언어 백준 2557번 Hello World (0) | 2022.05.05 |
C언어 백준 2562번 최댓값 (0) | 2022.01.22 |
C언어 백준 10818번 최소, 최대 (0) | 2022.01.22 |
C언어 백준 1110번 두 수 비교하기 (0) | 2022.01.20 |
댓글