※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts