[C++ 백준] 2577 숫자의 개수
728x90
반응형
문제 설명
- 세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
- 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
- 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.
풀이 과정
- 세자리수 자연수 abc를 했을 때 자리 수를 생각 해보자. 999를 1000이라 생각하면 ( 10^3 ) * 3 = 10^9이다. 이는 2^10 == 10^3으로 볼 수도 있다. 따라서 2^30 == 10^9도 가능
- int의 표현 범위는 -2^31~2^31-1 사이 이므로 위의 값은 int로 처리 가능하다.
- (1) 10으로 나눈 나머지를 배열의 인덱스로 해서 해당 값 1씩 증가 ex. arr[0] ⇒ 숫자 0의 갯수를 담은 배열값
- 10으로 나눈 몫으로 (1)을 반복
소스 코드
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
int arr[10] ={0};
cin >> a >> b >> c;
int num = a*b*c;
while( num != 0 )
{
arr[num % 10] +=1;
num /= 10;
}
for(int i= 0; i<10; i++)
{
cout << arr[i] << endl;
}
return 0;
}
링크
https://www.acmicpc.net/problem/2577
728x90
반응형
'문제풀이 > BOJ' 카테고리의 다른 글
[C++ 백준] 1546 평균 (0) | 2020.03.23 |
---|---|
[C++ 백준] 3052 나머지 (0) | 2020.03.21 |
[C++ 백준] 10039 평균 점수 (0) | 2020.03.18 |
[C++ 백준] 2562 최대값 (0) | 2020.03.13 |
[C++ 백준] 10818 최소, 최대 (0) | 2020.03.11 |
댓글
이 글 공유하기
다른 글
-
[C++ 백준] 1546 평균
[C++ 백준] 1546 평균
2020.03.23 -
[C++ 백준] 3052 나머지
[C++ 백준] 3052 나머지
2020.03.21 -
[C++ 백준] 10039 평균 점수
[C++ 백준] 10039 평균 점수
2020.03.18 -
[C++ 백준] 2562 최대값
[C++ 백준] 2562 최대값
2020.03.13