문제출처: https://www.acmicpc.net/problem/21773
1. 문제 접근 방식
우선순위가 prio => id => time순이므로 인풋을 받아서
split으로 각각 변수를 할당해주고
prio에는 최대 힙
id에는 최소 힙을 적용해준다.
2. 내가 푼 코드
import sys
import heapq
T, n = map(int,sys.stdin.readline().split())
heap=[]
for _ in range(n):
id, time, prio = map(int,sys.stdin.readline().split())
heapq.heappush(heap,[-prio,id,time])
for _ in range(T):
a = heapq.heappop(heap)
print(abs(a[1]))
if a[2]-1 > 0:
heapq.heappush(heap,[a[0]+1,a[1],a[2]-1])
3. 결과 및 느낀점
처음에 시간 초과 날 거를 알면서도 그냥 for루프를 두 번 돌았는데
생각을 바꿔서
나머지 프로세스들의 우선순위가 1 증가한다 = 내 우선순위가 1 감소한다
로 해결했다.
유연하게 생각하자 항상
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 2667 Python (0) | 2021.09.21 |
---|---|
[Boj/백준] 2644 Python (0) | 2021.09.20 |
[Boj/백준] 22252 Python (0) | 2021.09.17 |
[Boj/백준] 13975 Python (0) | 2021.09.16 |
[Boj/백준] 19598 Python (0) | 2021.09.15 |