본문 바로가기
C C++/C C++ 백준

C언어 백준 2577번 숫자의 개수

by Go! Jake 2022. 1. 22.

문제

세 개의 자연수 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

댓글