Problem Solving/BOJ

[백준 4358번] [Map] 생태학

  • -
728x90
반응형

Approach

전체에서 몇 퍼센트 해당하는지를 파악하는 것이므로, 쿼리에 대한 모든 정보를 받고 처리해야 한다. 이 부분에서 오프라인 쿼리 문제임을 인식해주면 된다. 추가적으로 Map container를 활용해주면 해당 set안에 몇 개 들어있는 상황인지를 쉽게 파악할 수 있다.

 

+ 어디까지 들어올지 모르는 상황이므로 while(getline(cin, t))를 사용하는 점을 유의깊게 보도록 하자.

+ cin.precision의 경우 정수부와 소수부의 자리수 개수의 합을 지정해주는 것이다. 소수점 이후의 자리부분을 설정하려면 cout << fixed를 처리해주면 된다.

Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)

using namespace std;

int main(void){
    fastio;
    int total = 0;
    string t;
    map<string, int> set_value;
    
    while(getline(cin, t)){
        if(set_value.find(t) == set_value.end()){
            set_value[t] = 1;
        }
        else set_value[t] += 1;
        total++;
    }

    for(map<string,int>::iterator it = set_value.begin(); it != set_value.end(); it++){
        cout << fixed;
        cout.precision(4);
        cout << it -> first << " " << (float) (it -> second * 100) / total  << "\n";
    }
    return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.