이 코드는 대기줄을 관리하고 최대 대기 인원 수와 그 순간의 마지막 학생 번호를 추적합니다.
## Python 코드
```python
from collections import deque
import sys
def main():
input = sys.stdin.read
data = input().splitlines()
n = int(data[0]) # 대기줄에 있는 학생 수
queue = deque()
max_queue_size = 0
last_student_number_at_max = -1
for i in range(1, n + 1):
command = list(map(int, data[i].split()))
type = command[0]
if type == 1:
student_number = command[1]
queue.append(student_number) # 줄 세우기
# 최대 대기 학생 수와 그 순간의 마지막 학생 번호 갱신
if len(queue) > max_queue_size:
max_queue_size = len(queue)
last_student_number_at_max = student_number
elif len(queue) == max_queue_size:
# 여러 번 대기 인원 같을 때 가장 작은 번호로 갱신
last_student_number_at_max = min(last_student_number_at_max, student_number)
elif type == 2:
if queue:
queue.popleft() # 대기줄에서 학생 제거
print(max_queue_size, last_student_number_at_max)
if __name__ == "__main__":
main()
```
### 코드 설명
- **입력 처리**: `sys.stdin.read`를 사용하여 모든 입력을 한 번에 읽고, 각 줄을 분리하여 처리합니다.
- **큐 사용**: `collections.deque`를 사용하여 대기줄을 큐로 구현합니다.
- **명령 처리**: 각 명령에 따라 학생을 추가하거나 제거하며, 최대 대기 인원 수와 그 순간의 마지막 학생 번호를 추적합니다.
- **출력**: 최대 대기 인원 수와 그 순간의 마지막 학생 번호를 출력합니다.
99클럽 코테 스터디 20일차 TIL + 오늘의 학습 키워드 : 힙 (2) | 2024.11.16 |
---|---|
99클럽 코테 스터디 19일차 TIL + 오늘의 학습 키워드 : 힙 (2) | 2024.11.15 |
99클럽 코테 스터디 17일차 TIL + 오늘의 학습 키워드 : 스택/큐 (4) | 2024.11.13 |
99클럽 코테 스터디 16일차 TIL + 오늘의 학습 키워드 : 스택/큐 (3) | 2024.11.12 |
99클럽 코테 스터디 15일차 TIL + 오늘의 학습 키워드 : 스택/큐 (2) | 2024.11.11 |