본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 13904 과제

by Alan_Kim 2023. 12. 14.
728x90
반응형

https://www.acmicpc.net/problem/13904

 

13904번: 과제

예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.

www.acmicpc.net

 

문제 해결

  • 어떻게 일을 먼저 계획할 것인지 순서를 정하는 문제
  • 당연히 점수가 높은 일을 먼저 계획을 해야한다.(중요하기 때문)
  • 그다음 고려할 것은 가능하면 빨리 해결해야하는 문제이다.
  • 따라서 힙(heap)을 사용할 것이다.
  • 그리고 가능하면 마감기간에 처리를 하여 비록 비중이 적지만 빨리 처리해야하는 것도 처리할 수 있도록 한다.

 

CODE

import sys
input = sys.stdin.readline
import heapq

def solution():
    global answer
    reservation = [0 for _ in range(1001)]
    while heap:
        sub_w, d = heapq.heappop(heap)
        # print(sub_w)
        w = -1*sub_w
        for i in range(d,0,-1):
            if reservation[i]==0:
                reservation[i] = 1
                answer += w
                # print(answer)
                break

if __name__=='__main__':
    n = int(input())
    heap = []
    answer = 0
    for _ in range(n):
        d, w = map(int, input().split())
        heapq.heappush(heap, (-w,d))
    solution()
    print(answer)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 20310 타노스  (1) 2023.12.23
[python] 백준 2638 치즈  (0) 2023.12.21
[python] 백준 10835 카드게임  (0) 2023.12.13
[python] 백준 13335 트럭  (0) 2023.12.10
[python] 백준 1069 집으로  (2) 2023.12.07

댓글