백준 2577번 숫자의 개수

Develop My Life·2022년 2월 13일
0

PS

목록 보기
2/32

문제

세 개의 자연수 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번 쓰였다.

입력

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

출력

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

풀이

#include <iostream>
#include <limits>

using namespace std;

int main()
{
	int cnt[10] = { 0 };
	int ABC = 1;

	//입력을 받아 바로 A * B * C을 구함
	for (int i = 0; i < 3; i++) {
		int tmp;
		cin >> tmp;
		ABC *= tmp;
	}

	// cnt 배열의 각 인덱스의 값은 각 숫자가 나온 값을 저장하는 공간이고
	// 10 나머지 연산을 통해 각 자리 숫자를 얻고 10 나누기를 통해
	// 알아낸 숫자를 없앤다.
	while (ABC > 0) {
		int num;
		num = ABC % 10;
		cnt[num] += 1;
		ABC /= 10;
	}

	//cnt 배열의 값을 출력하여 각 숫자가 나온 횟수를 출력
	for (int i = 0; i < 10; i++) {
		cout << cnt[i] << endl;
	}

	return 0;
}

크기가 10인 배열을 만들어 숫자의 개수를 저장할 공간을 만들고 숫자의 개수는 10으로 나머지 연산을 하여 숫자를 알아내고 이를 인덱스 번호로 활용하여 개수를 +1 해준다. 그리고 10으로 나누어서 파악한 숫자를 없애준다. 이를 반복하면 모든 숫자의 개수를 알게된다.

0개의 댓글