728x90
반응형
1. 문제
https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
2. 풀이
문제 자체는 어렵지 않지만 자주 안쓰면 까먹을법한 내용들이 많이 들어있다.
1. 입력의 개수가 따로 주어지지 않고 EOF면 종료하는 방법
while(getline(cin, str)) { // EOF면 종료
...
}
2. 소수점 자리수 맞추는 방법
// 소수점 4자리까지 표시
cout << fixed;
cout.precision(4);
3. map에서 value 접근 문법 ( 이전에는 계속 find를 사용하다가 이번에 새로 알게된 문법이다..)
dict[str]++; // 파이썬처럼 접근이 가능하다..
3. 코드
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
// 나무 종 이름, 개수
map<string, int> dict;
int total;
// 4358
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
string str;
while(getline(cin, str)) { // EOF면 종료
total++;
dict[str]++;
}
// 소수점 4자리까지 표시
cout << fixed;
cout.precision(4);
for(auto iter : dict) {
cout << iter.first << " " << ((double)iter.second / total) * 100 << "\n";
}
return 0;
}
728x90
반응형
'💡 Problem Solving > Baekjoon' 카테고리의 다른 글
[백준 - 6593] 상범 빌딩 [C++] (0) | 2023.10.24 |
---|---|
[백준 - 1946] 신입 사원 [C++] (0) | 2023.10.22 |
[백준 - 20055] 컨베이어 벨트 위의 로봇 [C++] (0) | 2023.10.20 |
[백준 - 1197] 최소 스패닝 트리 [C++] (0) | 2023.10.20 |
[백준 - 7490] 0 만들기 [C++] (0) | 2023.10.19 |