빵집 계산 줄
먼저 줄을 선 사람이 먼저 계산하고, 새 손님은 줄의 맨 뒤에 섭니다.
먼저 들어온 일을 먼저 처리하는 FIFO 구조
도착 순서를 공정하게 지키면서 일을 처리하거나, 가까운 상태부터 단계별로 탐색할 때 씁니다. 대기열과 BFS가 같은 구조를 쓰는 이유가 바로 FIFO 규칙입니다.
코드를 생각하지 말고, 아래 상황이 어떤 순서로 움직이는지만 따라가 보세요.
먼저 줄을 선 사람이 먼저 계산하고, 새 손님은 줄의 맨 뒤에 섭니다.
보고서, 사진, 영수증 순서로 인쇄를 누르면 프린터도 그 순서대로 처리합니다.
코딩 테스트의 장난감 예제를 넘어, 실제 시스템에서 같은 원리가 어디에 숨어 있는지 연결해 보세요.
메일 전송·이미지 변환 같은 비동기 작업을 도착 순으로 소비합니다.
순간적으로 몰린 요청을 큐에 잠시 저장해 서버 과부하를 줄입니다.
시작점에서 거리 1, 거리 2 순서로 정점을 방문합니다.
문의가 접수된 순서대로 상담원에게 배정해 대기 순서를 지킵니다.
도착한 프레임을 버퍼에 넣고 먼저 받은 프레임부터 재생합니다.
뒤(rear)에서 넣고 앞(front)에서 뺍니다. 파이썬 리스트의 pop(0)은 이동 비용이 들기 때문에 collections.deque의 append와 popleft를 사용해야 양쪽 연산이 O(1)입니다.
| 연산 | Python 표현 | 시간 |
|---|---|---|
| 뒤에 넣기 | q.append(x) | O(1) |
| 앞에서 빼기 | q.popleft() | O(1) |
| 앞 확인 | q[0] | O(1) |
| 포함 확인 | x in q | O(n) |
queue = [A], visited = {A}이웃 B, C 추가 → queue = [B, C]새 이웃 D 추가 → queue = [C, D]새 이웃 없음 → queue = [D]pop(0)을 반복하지 말고 deque를 사용합니다.설명을 닫고 먼저 풀어본 뒤, 막히는 지점에서 어떤 연산이 필요한지 다시 떠올려 보세요.
Easy 연습 1 / 7
Python으로 풀기Easy 연습 2 / 7
Python으로 풀기Easy 연습 3 / 7
Python으로 풀기Easy 연습 4 / 7
Python으로 풀기Easy 연습 5 / 7
Python으로 풀기Easy 연습 6 / 7
Python으로 풀기Easy 연습 7 / 7
Python으로 풀기Medium 연습 1 / 3
Python으로 풀기Medium 연습 2 / 3
Python으로 풀기Medium 연습 3 / 3
Python으로 풀기