본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 4358번 : 생태학

반응형

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

 

4358번: 생태학

프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어

www.acmicpc.net

자료구조 map을 사용해보는 문제였습니다.

 

풀이방법

 1. map의 key를 종 value를 해당 종의 나무 개수로 하여 저장합니다.

 

 2. 정답을 출력합니다.

* printf("%.소수점 몇 쨰자리f) 로 출력 형식을 고정시킬 수 있습니다.

 

Code

#include <bits/stdc++.h>
using namespace std;
map <string,double> m;
double totalCnt;
string s;

int main(){
    while(getline(cin,s)) m[s]++;
    for(auto el : m) totalCnt += el.second;
    for(auto el : m){
        cout << el.first << ' ';
        printf("%.4f\n",el.second / totalCnt * 100);
    }
}