알고리즘/백준

[C++] 백준 2577번 - 숫자의 개수

Esunn 2022. 7. 26. 22:25

 

 

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

문제 설명

A, B, C 숫자가 3개 주어지고 다 곱한 수에서 0부터 9까지 몇 번 쓰였는지 출력하는 문제이다.

 

#include <iostream>
using namespace std;

int chk(int x) {
	int cnt = 0;
	while (x > 0) {
		x = x / 10;
		cnt++;
	}
	return cnt;
}

int main() {
	int a, b, c;
	cin >> a >> b >> c;

	int num[10] = { 0, };
	int result = a * b * c;
	int len = chk(result);

	for (int i = 0; i < len; i++) { 
		num[result % 10]++; 
		result = result / 10;
	}
	for (int j = 0; j < 10; j++) cout << num[j] << endl;;
}

 

이 문제는 풀이가 다양한 것 같다. 나는 나머지를 구해서 풀었다.

 

입력과 자릿수 구하기

자릿수를 구하는 함수를 따로 만들어서 세 숫자의 곱의 자릿수를 먼저 알아냈다.

 

숫자 수 구하기

10으로 나눈 나머지번째의 배열을 더해주는 식으로 구현했다.

 


 

풀이가 다양한 문제인 것 같다. 찾아보니 문자열로 풀기도 하고 여러 방법이 존재했다.

PS 문제들은 한 번 풀어보고 찾아보는게 학습에 도움이 되는 것 같다. 

어떤 과정을 통해 풀었는지가 중요한 것 같다.

 

참고한 글

https://st-lab.tistory.com/271

 

[백준] 2577번 : 숫자의 개수 - [C++]

https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 이 번..

st-lab.tistory.com