※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 11292번 문제인 키 큰 사람이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/11292
11292번: 키 큰 사람
입력은 여러개의 테스트케이스로 구성되어있다. 각 테스트케이스는 첫 번째 줄에 학생의 수 N (0 < N ≤ 50)이 주어지고, 이어서 N개의 줄에 각 학생의 이름과 키가 공백으로 구별되어 주어진다.
www.acmicpc.net
입력으로 주어지는 실수는 사람의 키이므로 10보다 작은 값이 입력으로 주어질 것이라 가정해도 충분하다.
이 가정 하에 입력으로 주어지는 모든 문자열은 x.xx꼴로 주어지므로 이를 별도로 실수나 정수로 바꿔 저장하지 않고 문자열 그대로 비교하는 것으로 실수의 대소판별을 오차없이 해낼 수 있다.
주어지는 키가 기존에 입력으로 들어온 키의 최댓값보다 크다면 새로운 키를 최댓값으로 저장하고 그 키를 갖는 사람들을 차례대로 저장하는 벡터를 새로 구성하는 것을 반복해 문제를 해결하자. 단, 기존 최댓값과 같은 키를 가진 사람은 앞서 만들어진 벡터에 연이어 추가해주자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int N;
vector<string> vec;
string mx;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
while (N) {
vec.clear();
mx = "0.00";
while (N--) {
string s1, s2; cin >> s1 >> s2;
if (mx < s2) {
vec.clear();
vec.emplace_back(s1);
mx = s2;
}
else if (mx == s2) vec.emplace_back(s1);
}
for (auto& x : vec) cout << x << ' ';
cout << '\n';
cin >> N;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 20052 // C++] 괄호 문자열 ? (0) | 2023.12.20 |
---|---|
[BOJ 13339 // C++] XOR 수열 (1) | 2023.12.19 |
[BOJ 10770 // C++] Rövarspråket (0) | 2023.12.17 |
[BOJ 16900 // C++] 이름 정하기 (0) | 2023.12.16 |
[BOJ 14718 // C++] 용감한 용사 진수 (0) | 2023.12.15 |