백준/C++
[C++] 백준 2577번 - 숫자의 개수
꿩꿩
2024. 3. 30. 00:10
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