한다 공부
[C++] 백준 알고리즘 4358번 생태학 본문
난이도가 gold라 어려울줄 알았는데
생각보다 어렵지 않던 문제...!
공백을 입력받아야하므로
cin 대신 getline을 쓰고
소숫점 넷째자리까지 나타내기위해
아래와 같이 쓰면 된다
cout << fixed;
cout.precision(4);
cout << fixed;를 사용하지 않으면
셋째짜리까지 나타내고 나머지는 버려진다
.precision(n) -> n번째 자리까지 반올림
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main() {
map<string, int> tree;
string temp;
int count = 0;
//계속 입력을 받다가 입력이 없으면 무한루프 탈출
//공백도 입력받아야 하므로 cin말고 getline으로
//getline은 엔터 전까지의 문자열을 입력받음
while (true) {
getline(cin, temp);
if (temp == "") break;
//새 나무라면 갯수 1개
if (tree[temp] == NULL) {
tree[temp] = 1;
}
//카운트 했던 나무라면 갯수 +1
else
tree[temp]++;
//전체 나무 카운트(백분율 계산시 이용)
count++;
}
//소수점 넷째자리까지 반올림하는 법
cout << fixed;
cout.precision(4);
//형변환 안해주면 출력값 0 나옴, 형변환 해주기
for (auto i : tree)
cout << i.first << ' ' << (float) (i.second) / count * 100<<"\n";
}
출력결과 잘 나옴!
입력을 다 하고, 아무것도 입력을 안하고 엔터를 누르면 출력값이 나온다.
다른 백준 문제들은 몇 개의 입력을 받을건지 지정하는데
이 문제는 그러지 않아서 신기했다
'Algorithm > 문제풀이' 카테고리의 다른 글
[C++] 백준 알고리즘 20920번 영단어 암기는 괴로워 (0) | 2021.09.15 |
---|---|
[C++] 백준 알고리즘 10866번 덱 (0) | 2021.09.15 |
[C++] 백준 알고리즘 14425번 문자열 집합 (0) | 2021.09.12 |
[C++] 백준 알고리즘 1764번 듣보잡 (0) | 2021.09.12 |
[C++] 백준 알고리즘 19363번 요요 시뮬레이션 (0) | 2021.09.12 |