C++ STL의 sort는 문자열로 사전순으로 정렬해 준다는 것을 알고 있었기 때문에 출석부를 정렬하는 것 자체는 어렵지 않았다. 다만 double형 실수를 아무런 처리 없이 출력해주는 경우 110.40 같이 끝이 0으로 끝나는 실수를 110.4로 출력해버리는 문제가 발생했다.
이를 해결하기 위해 cout << fixed; 와 cout.precision()에 대해 살펴보자.
1.cout.precision() -> 표현하고자 하는 자리수를 정해주는 함수
즉, cout.precision(7); 을 선언해주고 123.456689를 출력하면
123.4567이 출력된다. 끝에 수가 6이 아닌 이유는 precision에 넘겨준 숫자 밖의 범위는 반올림 처리를 해주기 떄문이다.
2.cout << fixed; -> 소수점 이하만 다루게 해주는 역할!
따라서 1,2를 통해 아래와 같이 코드를 작성하여 문제를 해결할 수 있다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int n, k;
string name;
double height;
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n >> k;
vector<pair<string, double>> people;
for (int i = 0; i < n; i++) {
cin >> name >> height;
people.push_back({ name, height });
}
sort(people.begin(), people.end());
cout << people[k - 1].first << " ";
cout << fixed;
cout.precision(2);
cout << people[k-1].second;
return 0;
}
'Alrogithm > 구름(GOORM)' 카테고리의 다른 글
[구름 알고리즘 먼데이 챌린지] Week3 : 2. 폴더 폰 자판 (2) | 2022.11.05 |
---|---|
[구름 알고리즘 먼데이 챌린지] Week3 : 1. 0커플 (2) | 2022.11.05 |
[구름 알고리즘 먼데이 챌린지] Week2 : 1. 합격자 찾기 (0) | 2022.11.04 |
[구름 알고리즘 먼데이 챌린지] Week1 : 4. 소수 찾기 (0) | 2022.11.04 |
[구름 알고리즘 먼데이 챌린지] Week1 : 3. 최장 맨해튼 거리 (0) | 2022.11.04 |