코드
#include <iostream>
#include <string>
#include <deque>
#include <utility>
using namespace std;
int n, num;
string name, res;
deque<pair<string, int>> dq;
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
FASTIO();
cin >> n;
// 입력
for(int i = 0; i < n; i++) {
cin >> name >> num;
dq.push_back(make_pair(name, num));
}
// 덱의 크기가 1일 때 종료
while(1) {
if(dq.size() == 1) {
// 김한양의 최애
res = dq.front().first;
break;
}
string nxtname = dq.front().first;
int nxtnum = dq.front().second;
dq.pop_front();
nxtnum--;
// 가장 앞 사람이 최애를 찾는 과정
// 해당 반복문은 가장 뒤로 보내는 과정
while(nxtnum--) {
string tmpname = dq.front().first;
int tmpnum = dq.front().second;
dq.pop_front();
dq.push_back(make_pair(tmpname, tmpnum));
}
// 최애를 찾았으니 pop
dq.pop_front();
}
cout << res << '\n';
return 0;
}
풀이
요세푸스 문제와 비슷한 풀이이다. 덱을 이용해서 해결하면 되는 문제. 고학번이 슬퍼할 수 있는 문제였다...
'백준' 카테고리의 다른 글
[백준] 13414번 수강신청 C++ 코드 (0) | 2024.12.18 |
---|---|
[백준] 26566번 Pizza C++ 코드 (0) | 2024.12.18 |
[백준] 10491번 Quite a problem C++ 코드 (0) | 2024.12.17 |
[백준] 25175번 두~~부 두부 두부 C++ 코드 (2) | 2024.12.17 |
[백준] 2312번 수 복원하기 C++ 코드 (2) | 2024.12.10 |