굥뷰를 햡시댜

[BOJ-4358] 생태학 본문

카테고리 없음

[BOJ-4358] 생태학

GodZ 2019. 9. 25. 22:02

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

 

4358번: 생태학

문제 생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다. 입력 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다. 출력 주어진 각 종의 이름을 사전순으로 출력하고, 그 종이

www.acmicpc.net

 

풀고나서 알고리즘 분류를 봤더니 트라이로 구분되어 있었다.

 

나는 map을 사용했기 때문에 풀긴 풀었는데 정해는 아닌듯 하다.

 

 

- 풀이 방법

1. 입력을 받는다.

 

2. map에 문자열로 key값을 주면 자동으로 사전순으로 정렬된다.. 그래서 value값을 더했고

 

3. auto를 이용해 답을 구했다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <map>
#include <string>

using namespace std;

map<string, int> m;

int main(void) {

	string str;
	int cnt = 0;

	while (1) {
		getline(cin, str);

		if (str.length() == 0) break;
		cnt += 1;
		m[str] += 1;
	}
	
	for (auto it = m.begin(); it != m.end(); it++) {
		double temp = ((double)it->second / cnt);
		cout << it->first;
		printf(" %0.4lf\n", temp*100);
	}


	getchar();
	getchar();

	return 0;
}
Comments