🖥️ CS/Baekjoon Algorithms

#4358번 생태학 (C++)

한국의 메타몽 2021. 1. 2. 16:43

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

 

4358번: 생태학

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

www.acmicpc.net

문제 풀이는 다음과 같다. 

 

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