※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26042번 문제인 식당 입구 대기 줄이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26042
26042번: 식당 입구 대기 줄
첫 번째 정보부터 n번째 정보까지 순서대로 처리한 다음, 식당 입구에 줄을 서서 대기하는 학생 수가 최대가 되었던 순간의 학생 수와 이때 식당 입구의 맨 뒤에 대기 중인 학생의 번호를 빈칸을
www.acmicpc.net
문제에서 주어지는 상황은 큐(queue) 자료구조를 이용해 쉽게 시뮬레이션을 돌릴 수 있다. <queue> 헤더의 queue를 이용해 직접 시뮬레이션을 돌려 문제를 해결하자.
가장 많은 사람이 줄을 서있던 순간이 여럿인 경우 출력해야 하는 답은 "처음으로 그런 순간이 발생한 때"가 아닌 "줄의 마지막에 서있는 사람의 번호가 가장 작은 경우"를 살펴야 함에 유의하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
using namespace std;
int N;
queue<int> que;
int mx, id;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
while (N--) {
int x; cin >> x;
if (x == 1) {
int y; cin >> y;
que.push(y);
if (que.size() > mx || (que.size() == mx && y < id)) mx = que.size(), id = y;
}
else que.pop();
}
cout << mx << ' ' << id;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 26276 // C++] Point in Triangle (0) | 2022.12.12 |
---|---|
[BOJ 24084 // C++] 次の文字 (Next Character) (0) | 2022.12.12 |
[BOJ 16398 // C++] 행성 연결 (0) | 2022.12.12 |
[BOJ 2824 // C++] 최대공약수 (0) | 2022.12.11 |
[BOJ 4459 // C++] Always Follow the Rules in Zombieland (0) | 2022.12.11 |