본문 바로가기

백준/C++

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

728x90

 

문제 2577번

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

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

A*B*C의 결과에 몇개의 숫자들이 모였는지 알기 위해서는 문자열(to_string)로 바꾼 후 length()를 이용하여 크기를 구해야한다. 그렇게 바꾼 문자열에서 각 값(1~9)이 몇 개있는지 체크하고 체크한 배열을 출력해주면 된다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	int A, B, C;
	cin >> A >> B >> C;
	
	int num = A * B * C;
	string s = to_string(num);	//int를 string으로 변환(반대는 stoi)

	int count[10] = {};

	for (int i = 0; i < s.length(); i++) {
		count[s[i]-'0']++;	//문자를 숫자로 변환
	}
	for (int i = 0; i < 10; i++) {
		cout << count[i] << '\n';
	}
	
	return 0;
}

 

 

중간에 테스트 해보니 다 0으로 출력돼서 당황했는데 검색해보니 문자를 숫자로 변환할 때 (문자로 저장된 숫자-'0')을 해야 문자로 저장됐던 숫자가 숫자 타입으로 돌아온다고 한다.

728x90