본문 바로가기

Algorithm/BAEKJOON

[BOJ] 4358번 생태학 (C++)

728x90
반응형

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

 

4358번: 생태학

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

www.acmicpc.net

 

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

int main() {
	string str;
	map<string, float> m;
	float cnt = 0;
	while(getline(cin, str)){
		cnt++;
		if(m.find(str) == m.end()){
			m[str] = 1;
		} else{
			m[str]++;
		}
	}
	
	cout << fixed;
	cout.precision(4);
	for(auto iter = m.begin(); iter != m.end(); iter++){
		float x = (iter->second / cnt) * 100;
		cout << iter->first << " " << x << endl;
		
	}
	return 0;
}

새로 알게된 것

소수점 자릿수를 정해서 출력해야 될 때 printf만 썼었는데 cout으로 소수점 출력하는 방법을 알아보았다.

cout.precision(n)은 n자리로 출력하라는 뜻이다. 예를 들어 123.456689에서 n이 7이면 123.4567로 보여준다.

cout << fixed를 추가하면 소수점 이하의 자릿수만 다룰 수 있게 된다. 소수점 이하 n개의 수를 나타낼 것이란 뜻이다. 예를 들어 123.456689에서 n이 4이면 123.4567로 보여준다.

728x90
반응형