GitHubSeob
C++ / 백준 / 4358 / 생태학 본문
문제 |
https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
문제풀이 |
따로 끝을 알려주는 경우가 없고 띄어쓰기가 있어 한 줄을 입력받아야 하므로 while(getline(cin, name))을 사용했다.
정렬을 한 상태로 출력을 해야 하므로 unordered_map이 아닌 map을 사용했다.
입력받으면 unordered_map에 저장하고, 총개수에 +1을 한다.
모든 입력을 받았으면, iterator을 이용해 unordered_map을 탐색하면서 이름과 비율을 출력한다.
비율은 소수점 4자리까지 출력이므로 fixed와 setprecision(4)를 이용한다.
코드 |
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
map<string, int>trees;
string name("");
int count(0);
while (getline(cin, name)) {
++trees[name];
++count;
}
for (auto iter = trees.begin(); iter != trees.end(); ++iter) {
cout << iter->first << " " << fixed << setprecision(4) << (double)iter->second * 100 / count << '\n';
}
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 1302 / 베스트셀러 (0) | 2022.03.31 |
---|---|
C++ / 백준 / 10546 / 배부른 마라토너 (0) | 2022.03.31 |
C++ / 백준 / 11286 / 절댓값 힙 (0) | 2022.03.24 |
C++ / 백준 / 11279 / 최대 힙 (0) | 2022.03.21 |
C++ / 백준 / 14425 / 문자열 집합 (0) | 2022.03.21 |