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
'백준 > C++' 카테고리의 다른 글
[C++] 백준 1152번 - 단어의 개수 (0) | 2024.03.31 |
---|---|
[C++] 백준 3052번 - 나머지 && 백준 11720번 - 숫자의 합 (0) | 2024.03.30 |
[C++] 백준 1120번 - 문자열 (0) | 2024.03.28 |
[C++] 백준 27866번 - 문자와 문자열 (0) | 2024.03.27 |
[C++] 백준 1072번 - 게임 (0) | 2024.03.27 |