[백준 / BOJ][Python] 19640 - 화장실의 규칙
https://www.acmicpc.net/problem/19640
19640번: 화장실의 규칙
위와 같이 줄을 선 경우를 생각해보자. (x, y) 는 사원의 근무 일수가 x, 화장실이 급한 정도가 y임을 나타낸다. [x, y]는 해당 사원이 데카임을 의미한다. 즉, 위의 그림에서 데카는 3번 사원이다.
www.acmicpc.net
걸린 시간
12 : 58
문제 풀이
문제 그대로 구현하면 되는 시뮬레이션 문제. 단 우선순위 큐를 사용하여 가장 먼저 사라질 원소를 관리해야 한다. 줄의 선두에 있는 사람들을 우선순위 큐에 넣고 삭제, 삽입을 반복하며 문제의 조건을 만족하면 반복을 그만둔다. 구현이 어렵지는 않지만 실수에 주의.
코드
import sys, heapq
from collections import deque
input = sys.stdin.readline
n, m, k = map(int, input().split())
person = [deque([]) for _ in range(m)]
for i in range(n):
a, b = map(int, input().split())
person[i % m].append((-a, -b, i % m, 1 if i == k else 0))
cnt = 0
pq = []
for i in range(m):
if person[i]:
heapq.heappush(pq, person[i][0])
while True:
x = heapq.heappop(pq)
person[x[2]].popleft()
if x[3]:
break
else:
cnt += 1
if person[x[2]]:
heapq.heappush(pq, person[x[2]][0])
print(cnt)
'Problem Solving' 카테고리의 다른 글
| [백준 / BOJ][Python] 250724 ~ 250727 문제 풀이 (3) | 2025.07.28 |
|---|---|
| [백준 / BOJ][Python] 250728 문제 풀이 (3) | 2025.07.28 |
| [백준 / BOJ][Python] 1595 - 북쪽나라의 도로 (0) | 2023.06.25 |
| [백준 / BOJ][Python] 2479 - 경로 찾기 (1) | 2023.06.25 |
| [백준 / BOJ][Python] 23254 - 나는 기말고사형 인간이야 (1) | 2023.03.22 |