# [Silver V] 식당 입구 대기 줄 - 26042 [문제 링크](https://www.acmicpc.net/problem/26042) ### 성능 요약 메모리: 34324 KB, 시간: 104 ms ### 분류 자료 구조, 구현, 큐 ### 제출 일자 2024년 11월 15일 10:30:34 ### 문제 설명
여러 명의 학생이 식사하기 위하여 학교 식당을 향해 달려가고 있다. 학교 식당에 도착한 학생은 식당 입구에 줄을 서서 대기한다. 학교 식당에 먼저 도착한 학생이 나중에 도착한 학생보다 식당 입구의 앞쪽에서 대기한다. 식사는 1인분씩 준비된다. 식사 1인분이 준비되면 식당 입구의 맨 앞에서 대기 중인 학생 1명이 식당으로 들어가서 식사를 시작한다. 식사를 시작한 학생은 항상 식사를 마친다.
학생이 학교 식당에 도착하고 식사가 준비되는 n개의 정보가 저장된 A가 주어진다. A에 저장된 첫 번째 정보부터 n번째 정보까지 순서대로 처리한 다음, 식당 입구에 줄을 서서 대기하는 학생 수가 최대가 되었던 순간의 학생 수와 이때 식당 입구의 맨 뒤에 대기 중인 학생의 번호를 출력하자. 대기하는 학생 수가 최대인 경우가 여러 번이라면 맨 뒤에 줄 서 있는 학생의 번호가 가장 작은 경우를 출력하자.
A에 저장된 n개의 정보는 아래 두 가지 유형으로 구분된다. 첫 번째가 유형 1, 두 번째가 유형 2이다.
- 1 a: 학생 번호가 양의 정수 a인 학생 1명이 학교 식당에 도착하여 식당 입구의 맨 뒤에 줄을 서기 시작한다.
- 2: 식사 1인분이 준비되어 식당 입구의 맨 앞에서 대기 중인 학생 1명이 식사를 시작한다.
식사 1인분이 준비될 때는 식당 입구에서 대기 중인 학생이 항상 존재한다. 식당 입구에 줄을 서서 대기하였으나 식사가 준비 안 된 학생은 식사를 못 한다.
### 입력
첫 번째 줄에 n이 주어진다.
다음 줄부터 n개의 줄에 걸쳐 한 줄에 하나의 정보가 주어진다. 주어지는 정보는 유형 1, 2중 하나이다.
### 출력
첫 번째 정보부터 n번째 정보까지 순서대로 처리한 다음, 식당 입구에 줄을 서서 대기하는 학생 수가 최대가 되었던 순간의 학생 수와 이때 식당 입구의 맨 뒤에 대기 중인 학생의 번호를 빈칸을 사이에 두고 순서대로 출력한다. 대기하는 학생 수가 최대인 경우가 여러 번이라면 맨 뒤에 줄 서 있는 학생의 번호가 가장 작은 경우를 출력한다.
<내 코드 일지는?>
from collections import deque
import sys
input = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용
def find_max_queue_info():
n = int(input().strip())
queue = deque()
max_count = 0
min_last_student = None
for _ in range(n):
command = input().strip().split()
if command[0] == '1': # 학생이 줄을 섬
student_num = int(command[1])
queue.append(student_num)
# 대기 학생 수와 마지막 학생 갱신 조건을 단순화
if len(queue) > max_count:
max_count = len(queue)
min_last_student = student_num
elif len(queue) == max_count and (min_last_student is None or student_num < min_last_student):
min_last_student = student_num
elif command[0] == '2': # 식사가 준비되어 대기 중인 학생이 식사를 시작함
queue.popleft()
# 최종 결과 출력
print(max_count, min_last_student)
# 함수 호출
find_max_queue_info()
'문제풀이 > 일일연습문제' 카테고리의 다른 글
[Priority Queue]99클럽 코테 스터디 21일차 TIL + 백준/Silver/19638. 센티와 마법의 뿅망치 (2) | 2024.11.18 |
---|---|
[heap]99클럽 코테 스터디 19일차 TIL + 백준/Silver/1927. 최소 힙 (1) | 2024.11.16 |
[스택/큐]99클럽 코테 스터디 17일차 TIL + 백준/Silver/25497. 기술 연계마스터 임스 (0) | 2024.11.14 |
[스택/큐]99클럽 코테 스터디 16일차 TIL + 백준/Silver/2161. 카드1 (0) | 2024.11.13 |
[스택/큐]99클럽 코테 스터디 15일차 TIL + 프로그래머스/1/12906. 같은 숫자는 싫어 (0) | 2024.11.12 |