본문 바로가기
Online-Judge/Baekjoon

[Baekjoon] C++ 2577번 숫자의 개수

by nyangzzi 2021. 5. 31.
반응형

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

 

int A, B, C의 값을 입력 받은 뒤 곱셈한 값을 구한다.

int A=0, B=0, C=0;
cin>> A >> B >> C;

int mul = A * B * C;

 

 

크기가 10인 배열을 만든다.

이때 각각의 주소에 들어가는 값은, 해당 주소의 숫자를 카운트한 값이다.

예를 들어, num[2]에 들어가는 값은 mul에서 2의 개수를 센 값이다.

 

그 뒤 mul의 맨 뒷자리부터 어떤 숫자인지 카운트 한다.

mul % 10 한 값이 가장 뒤의 숫자이며,

mul /= 10; 을 통해 이미 센 수를 제거해준다.

  

모든 자리를 전부 셀 때까지 (mul이 0이 될 때까지) 반복한다.

 while(mul > 0){
    num[mul%10]++;
    mul /= 10;
}    

 

 

마지막으로 모든 배열의 값을 출력해준다.

for(int i = 0; i<10; i++){
    cout << num[i] <<endl;
}

[전체 코드]

#include <iostream>
using namespace std;

int main(){
    int A=0, B=0, C=0;
    cin>> A >> B >> C;
    
    int mul = A * B * C;
    
    int num[10]= {};
    while(mul > 0){
    	num[mul%10]++;
        mul /= 10;
    }
    
    for(int i = 0; i<10; i++){
    	cout << num[i] <<endl;
    }
}
반응형

댓글