알고리즘/백준 BAEK JOON

2577.숫자의 개수

IMyoungho 2020. 4. 21. 22:55

이번에 풀어볼 문제는 난이도는 굉장히 쉽다면 쉽다. 구현의 분류에 있는 문제인데

어떻게하면 좀더 효율적으로 풀 수 있는지 고민해볼 수도 있고 여러사람의 코드를 보면서

생각해볼 수 있는 문제인 것 같다. 지금까지 풀었던 구현 문제들(블로그에 포스팅 안한 것도 있음)을 보면

대부분 난이도는 그렇게 어렵지 않지만 생각해보기 좋은 문제들이 나오는 것 같다.

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

 

< Code 설명 >

#include <iostream>
#include <string.h>
#include <algorithm>

using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    int sum = a*b*c;              // 3개의 수를 곱한 값을 저장
    string str = to_string(sum);  // 문자열로 바꾼다.
    sort(str.begin(),str.end());  // sort로 정렬해준다.

    int answer[11]={0,};          // 정답이 저장될 배열 공간이며 숫자의 갯수를
                                  // 카운트 할 것이기 때문에 0으로 초기화
    while(!str.empty()){
        answer[str.back()-'0']+=1; // 숫자인 문자와 같은 배열의 위치값을 올려준다.
                                   // ex) '0'은 answer[0]의 값 ++
                                   //     '5'는 answer[5]의 값 ++
                                   
        str.pop_back();            // 탐색이 끝난건 빼준다.
    }
    for(int i=0; i<10; i++){       // 정답 출력!
        cout << answer[i] << "\n";
    }
    return 0;
}

 

 

반응형