[Python] 백준/BOJ 26042번: 식당 입구 대기 줄 (Silver 5)

2025. 7. 15. 23:19·Algorithm/백준 (BOJ)
반응형

💻 Problem

문제 보러 가기

 

여러 명의 학생이 식사하기 위하여 학교 식당을 향해 달려가고 있다. 학교 식당에 도착한 학생은 식당 입구에 줄을 서서 대기한다. 학교 식당에 먼저 도착한 학생이 나중에 도착한 학생보다 식당 입구의 앞쪽에서 대기한다. 식사는 1인분씩 준비된다. 식사 1인분이 준비되면 식당 입구의 맨 앞에서 대기 중인 학생 1명이 식당으로 들어가서 식사를 시작한다. 식사를 시작한 학생은 항상 식사를 마친다.

학생이 학교 식당에 도착하고 식사가 준비되는 n개의 정보가 저장된 A가 주어진다. A에 저장된 첫 번째 정보부터 n번째 정보까지 순서대로 처리한 다음, 식당 입구에 줄을 서서 대기하는 학생 수가 최대가 되었던 순간의 학생 수와 이때 식당 입구의 맨 뒤에 대기 중인 학생의 번호를 출력하자. 대기하는 학생 수가 최대인 경우가 여러 번이라면 맨 뒤에 줄 서 있는 학생의 번호가 가장 작은 경우를 출력하자.

A에 저장된 n개의 정보는 아래 두 가지 유형으로 구분된다. 첫 번째가 유형 1, 두 번째가 유형 2이다.

  • 1 a: 학생 번호가 양의 정수 a인 학생 1명이 학교 식당에 도착하여 식당 입구의 맨 뒤에 줄을 서기 시작한다.
  • 2: 식사 1인분이 준비되어 식당 입구의 맨 앞에서 대기 중인 학생 1명이 식사를 시작한다.

식사 1인분이 준비될 때는 식당 입구에서 대기 중인 학생이 항상 존재한다. 식당 입구에 줄을 서서 대기하였으나 식사가 준비 안 된 학생은 식사를 못 한다.

 

💡 Approach

간단한 큐 문제이다.

처음에 현재 대기줄 길이가 대기줄 길이 최댓값보다 클 때와 둘이 같을 때를 구분하지 않아서 틀렸었는데

더 클 때는 맨 뒤에 줄 서 있는 학생의 번호를 갱신하면 문제가 되므로 경우를 구분했다.

 

✏️ Solution

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
waiting = deque() # 대기줄
max_count = 0 # 대기하는 학생 수가 최대인 수
student_number = 100_000 # 맨 뒤에 줄 서 있는 학생의 번호


for _ in range(n):
    command = input().split()

    if command[0] == '1':
        last = int(command[1])
        waiting.append(last)

        if len(waiting) == max_count:
            student_number = min(student_number, last)
        
        elif len(waiting) > max_count:
            max_count = len(waiting)
            student_number = last
        
    
    elif command[0] == '2':
        waiting.popleft()

print(max_count, student_number)

 

반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 31395번: 정렬된 연속한 부분수열의 개수 (Silver 4)  (0) 2025.07.17
[Python] 백준/BOJ 9095번: 1, 2, 3 더하기 (Silver 3)  (0) 2025.07.16
[Python] 백준/BOJ 3459번: 아스키 도형 (Silver 1)  (0) 2025.07.14
[Python] 백준/BOJ 3054번: 피터팬 프레임 (Silver 5)  (0) 2025.07.13
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 31395번: 정렬된 연속한 부분수열의 개수 (Silver 4)
  • [Python] 백준/BOJ 9095번: 1, 2, 3 더하기 (Silver 3)
  • [Python] 백준/BOJ 3459번: 아스키 도형 (Silver 1)
  • [Python] 백준/BOJ 3054번: 피터팬 프레임 (Silver 5)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (196) N
      • SSAFY (10)
      • Algorithm (114) N
        • 이론 (6)
        • 백준 (BOJ) (107) N
        • 프로그래머스 (1)
      • Trouble Shooting (9)
      • Frontend (6)
      • React (17)
      • Next.js (4)
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    구현
    Java
    dfs
    수학
    Algorithm
    DP
    백준
    블록체인
    중복조합
    파이썬
    React
    강의
    싸피
    SSAFY
    백트래킹
    중복순열
    Heap
    우선순위큐
    Next.js
    Error
    티스토리챌린지
    bfs
    브루트포스
    순열
    재귀
    SSAFYcial
    오블완
    html5
    힙
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 26042번: 식당 입구 대기 줄 (Silver 5)
상단으로

티스토리툴바