문제 풀이/백준(BOJ)
[C++] 백준 4358번 : 생태학
희조당
2022. 1. 20. 21:14
728x90
https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
문제 풀이
간단하게 맵에 대해서 이해를 묻는 문제였다.
느낀 점
문제 자체는 어렵지 않으나, 이번에는 2가지를 배울 수 있었다.
1. 백준 채점은 파일 형식으로 처리된다. 따라서 EOF를 받으면 입력을 종료하면 된다.
2. cout << fixed; 와 cout.precision()으로 출력 자릿수를 조절할 수 있다!!
출력 자릿 수는 저번에도 까먹었으니 이번에 제대로 기억해야겠다.
코드
#include <iostream>
#include <map>
#include <string>
using namespace std;
map<string, float> m;
int cnt = 0;
string wood;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
while (getline(cin, wood)) {
cnt++;
if (m.find(wood) != m.end())
m[wood]++;
else m[wood] = 1;
}
cout << fixed;
cout.precision(4);
for (auto iter = m.begin(); iter != m.end(); iter++) {
cout << iter->first << " " << (iter->second / cnt) * 100 << "\n";
}
}