[Boj문제풀이]

[Boj/백준] 21773 Python

ki7348 2021. 9. 18. 20:13

문제출처: https://www.acmicpc.net/problem/21773

 

21773번: 가희와 프로세스 1

1초일 때 부터 4초일 때 상황을 그림으로 나타내면 아래와 같습니다. 아래 그림에서 주황색은 특정 시점에 스케쥴러가 선택한 프로세스를 의미합니다.

www.acmicpc.net

 

 

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