문제 링크 : www.acmicpc.net/problem/4358
문제 풀이는 다음과 같다.
1. 공백을 포함한 문자열을 EOF이전까지 받아준다.
2. map을 통해 동일한 이름의 나무끼리 묶어주고 숫자를 셀 수 있도록 map 함수를 활용한다.
3. 소수점 4자리까지 값이 나올 수 있도록 라이브러리를 활용해준다.
3-(1) 이때 나무의 갯수 int형을 double로 형변환 하는 것을 잊지 않도록 한다.
#include <iostream>
#include <cstring>
#include <map>
#include <iomanip>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
map<string,int> ecology;
string tree;
int total = 0;
while(getline(cin,tree)){
ecology[tree]++;
total++;
}
for(auto[t,n] : ecology){
cout << fixed << setprecision(4);
cout << t << ' ' << (double)n*100/total << "\n";
}
return 0;
}
테스트를 할때 입력을 종료하고싶다면 'Ctrl + D'를 입력해주면 된다.
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#15724 주지수(C++) (0) | 2021.01.13 |
---|---|
#1954 운동(C++) (0) | 2021.01.10 |
#7682번 틱택토 (C++) (0) | 2021.01.02 |
#2239번 스도쿠 (C++) (0) | 2020.12.30 |
#2470번 두 용액 (C++) (0) | 2020.12.17 |