본문 바로가기
프로그래밍 ( Programming )/백준 알고리즘 (BaekJoon Algorithm)

2577번 - 숫자의 개수(백준 알고리즘/C++)

by Jayce_choi 2020. 11. 24.
반응형
 

2577번: 숫자의 개수

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

www.acmicpc.net

문제 : 세 개의 자연수 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>
using namespace std;

int main()
{
	int A, B, C;
	int arr[10] = { 0 };
	cin >> A >> B >> C;
	int result = A * B * C;

	while (result != 0)
	{
		arr[result % 10] += 1;
		result /= 10;
	}
	for (int i = 0;i < 10;i++)
	{
		cout << arr[i] << endl;
	}
	return 0; 
}

중요 포인트 
 - A, B, C 곱해진 연산 값의 각 자릿수 파악 및 배열에 결과 대입하기 
 
이 문제의 중요한 구문은 while 문을 구성하는 요소들이다. 
우선 arr [10]을 통해 0~9까지 개수가 파악된 수가 담아질 배열을 선언한다.
그리고 arr [result%10]을 통해서 1의 자리 숫자를 파악하는 동시에 1의 자리 숫자가 담길 배열 위치에 동시에 넣는 구문이다. 
그 후 result/=10을 통해 다음 자리로 가는 연산을 진행하여 최종적으로 result값이 0으로 도달할 때 멈추도록 구현되었다.

반응형

댓글