4358번 : 생태학
문제)
생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.
입력 :
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다.
출력 :
주어진 각 종의 이름을 사전순으로 출력하고, 그 종이 차지하는 비율을 백분율로 소수점 4째자리까지 반올림해 함께 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// 4358. 생태학
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<string, int> forest;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int cnt = 0;
string tree;
while (1)
{
// 한줄 입력을 받는다.
// 만약 getline을 하기 전에, cin을 한 적이 있다면
// cin.ignore()을 이용하여 버퍼를 비워줘야 한다.
getline(cin, tree);
// 입력이 끝났다면 탈출
if (cin.eof()) break;
// 총 나무의 개수
cnt++;
forest[tree]++;
}
// 소수점 출력을 고정한다. (소수점 아래 4자리)
cout << fixed;
cout.precision(4);
// for-each문을 이용하여 출력하여 준다.
// map의 경우에는 저장될 때부터 정렬되어 있음.
for (auto ele : forest)
{
cout << ele.first << " "; // (블로그용으로 2줄로 적음.)
cout << ((float)ele.second / (float)cnt) * 100 << '\n';
}
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 19939번 : 박 터뜨리기 (C++) (0) | 2023.10.06 |
---|---|
[백준] 16235번 : 나무 재태크 (C++) (0) | 2023.10.05 |
[백준] 20208번 : 진우의 민트초코우유 (C++) (0) | 2023.10.04 |
[백준] 2212번 : 센서 (C++) (0) | 2023.10.04 |
[백준] 2194번 : 유닛 이동시키기 (C++) (0) | 2023.10.04 |