# 문제
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
# 풀이
목표로 했던 11단계까지 풀이는 마쳤고, solved.ac 기준 Class 1을 달성하기 위해 남은 문제들을 풀고 있다.
그래서 다시 간단한 문제들로 복귀! 정답 소스코드를 바로 확인해보자.
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false); // 두 표준 입출력 동기화 해제
int a, b, c;
cin >> a >> b >> c;
int product = a*b*c;
int num[10] = {0};
while(product>0){
num[product%10]++;
product /= 10;
}
for(int i=0; i<10; i++){
cout << num[i] << '\n';
}
return 0;
}
우선 입력된 a, b, c 의 곱을 구해 product에 저장해준다.
그리고 그 결과에 0-9까지의 숫자가 각각 몇 번씩 쓰였는지 알아봐야 하므로 크기 10의 정수 배열을 만들어주었다. 그 후에는 아주 간단하다! product 값을 10으로 나머지 연산해주며, 그 값을 인덱스로 주고 배열의 값을 증가시키면 된다.
문제에 제시된 예시로 확인해보면 17037300%10 = 0이므로 num[0]의 값을 1 증가 시켜준다.
그리고 나누기 연산을 통해 해당 자리수를 지워준다. 17037300/10 = 1703730
이 과정을 반복하면 아래의 표와 같다.
반복 횟수 | % | / |
1 | 0 | 1703730 |
2 | 0 | 170373 |
3 | 3 | 17037 |
4 | 7 | 1703 |
5 | 3 | 170 |
6 | 0 | 17 |
7 | 7 | 1 |
8 | 1 | 0 |
따라서 배열에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 카운팅되었을 것이다.
for문을 돌며 0-9까지 해당 인덱스의 값을 출력해주면 해결 완료!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 8958번: OX퀴즈 | C++ 풀이 (0) | 2023.06.24 |
---|---|
[백준] 2920번: 음계 | C++ 풀이 (0) | 2023.06.23 |
[백준] 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 | C++ 풀이 (0) | 2023.06.21 |
[백준] 24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5 | C++ 풀이 (0) | 2023.06.20 |
[백준] 24265번: 알고리즘 수업 - 알고리즘의 수행 시간 4 | C++ 풀이 (0) | 2023.06.19 |