어흥

[백준 4358] 생태학 (C++) 본문

알고리즘/백준

[백준 4358] 생태학 (C++)

라이언납시오 2020. 9. 19. 01:10
728x90
반응형

문제 링크: www.acmicpc.net/problem/4358

 

4358번: 생태학

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

www.acmicpc.net

1. 주의할 점

- EOF를 입력받을 때까지 입력받도록 한다

- 소숫점 아래 4번째 숫자까지만 받는다

 

2. 구현

- while(getline(cin, str)) 을 통해 EOF를 입력받기 전까지 종의 이름을 입력 받는다

- Map을 통해 각 종이 몇 번 입력 받았는지 계산한다

- 각 종이 입력 받은 백분율을 소수점 4째 자리까지 출력하도록 한다

 

#include <iostream>
#include <string>
#include <map>
using namespace std;

map<string, float> m;
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	string str;
	float cnt = 0;
		
	while (getline(cin, str)) {
		cnt++;
		if (m.find(str) != m.end()) {
			m[str] += 1;
		}
		else
			m[str] = 1;
	}
	cout << fixed;
	cout.precision(4);
	for (auto it = m.begin(); it != m.end(); it++) {
		float val = (it->second / cnt) * 100;
		cout << it->first << " ";
		cout << val << endl;
	}	
	return 0;
}
728x90
반응형
Comments