쌓고 쌓다

[백준] 생태학 4358번 C++ 풀이 본문

알고리즘/백준

[백준] 생태학 4358번 C++ 풀이

승민아 2022. 1. 3. 19:35

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

 

4358번: 생태학

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

www.acmicpc.net

 

#include <iostream>
#include <map>
#include <string>
using namespace std;
map<string, int> m;
int main(void)
{
	cin.tie(0);
	ios_base::sync_with_stdio(0);
	cout << fixed;
	cout.precision(4);
	string str;
	int N=0; // 전체 개수
	while (getline(cin,str))
	{
		N++;
		m[str]++;
	}
	for (auto iter = m.begin(); iter != m.end(); iter++)
	{
		cout << iter->first << " "<<(double)iter->second/N*100<<"\n";
	}
}

어~~ 이 문제를 푸는데 ^Z 입력 즉, 그만 입력할 때까지 입력받는 방법도 까먹고 map iterator도 까먹고~~~

소수점 4자리까지만 표시할줄 모르고~~ 막막했지만, 그냥 풀이 보면서 익혔다~

 

iter를 map<string,int>::iterator iter 으로 해도 무방하지만 auto라는것을 보고 한번 써봤는데 좋다~

 

cout.precision(n) : 정수+소수점이 있는데 모두 해서 자리수 고정이다. 4를 입력 시 XX.XX만 나온다 무조건 4자리.

하지만 이 cout.precision 앞에 cout<<fixed를 입력할 경우 소수점 자리가 고정이 된다.

 

 

Comments