https://www.acmicpc.net/problem/2577
아이디어:
1. 문자열로 변환 후 각 문자에 접근해서 count 변수를 추가하고 출력
2. switch case문 사용
// 2577
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int A, B, C, mul;
string mul_result;
int count_0 = 0, count_1 = 0, count_2 = 0, count_3 = 0, count_4 = 0;
int count_5 = 0, count_6 = 0, count_7 = 0, count_8 = 0, count_9 = 0;
cin >> A >> B >> C;
mul = A * B * C;
mul_result = to_string(A * B * C);
for (int i = 0; i < mul_result.length(); i++) {
switch (mul_result[i]) {
case '0':
count_0++;
break;
case '1':
count_1++;
break;
case '2':
count_2++;
break;
case '3':
count_3++;
break;
case '4':
count_4++;
break;
case '5':
count_5++;
break;
case '6':
count_6++;
break;
case '7':
count_7++;
break;
case '8':
count_8++;
break;
case '9':
count_9++;
break;
}
}
cout << count_0 << "\n";
cout << count_1 << "\n";
cout << count_2 << "\n";
cout << count_3 << "\n";
cout << count_4 << "\n";
cout << count_5 << "\n";
cout << count_6 << "\n";
cout << count_7 << "\n";
cout << count_8 << "\n";
cout << count_9;
return 0;
}
모범답안:
1. 숫자를 변수가 아닌 배열로 저장
2. 곱한 수(int)를 10으로 나눈 나머지를 배열의 인덱스로 하고 0에서 ++로 증가
3. 배열 순회해서 출력
#include <iostream>
using namespace std;
int main() {
int a = 0, b = 0, c = 0;
int mul = 0;
int cnt[10] = { 0, };
cin >> a >> b >> c;
mul = a * b * c;
while (mul) {
cnt[mul % 10]++;
mul /= 10;
}
for (int i = 0; i < 10; i++) {
cout << cnt[i] << '\n';
}
return 0;
}
'algorithm' 카테고리의 다른 글
백준 4153번 직각삼각형 (0) | 2024.11.03 |
---|---|
백준 2920번 음계 (0) | 2024.11.03 |
백준 10250번 ACM 호텔 (0) | 2024.11.03 |
백준 31403번 A+B-C (0) | 2024.10.27 |
백준 2475번 검증수 (0) | 2024.10.27 |