[BOJ]13094 과제

ganta·2021년 5월 30일
0

알고리즘 문제해결

목록 보기
19/24
post-thumbnail

✔️ 문제 링크

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

💡 핵심 아이디어

1️⃣ 과제 점수가 높은 과제부터 고려를 시작

2️⃣ 최대한 늦게 늦게 끝낼 수 있는 과제를 최대한 늦은 날짜에 끝내도록 한다. (날짜마다 수행한 과제는 scores배열에 저장)

⭐️ 소스 코드

if __name__ == '__main__':
    N = int(input())
    assign_list = []

    ans = 0
    scores = [0] * 1000

    for _ in range(N):
        d, w = map(int, input().split())
        assign_list.append([d,w])

    assign_list = sorted(assign_list, key = lambda x: (-x[1], x[0]))

    for info in assign_list:
        temp_d, temp_w = info
        temp_d -= 1

        for i in range(temp_d, -1,-1):
            # 과제 수행 할 날짜가 있는 경우
            if scores[i] == 0:
                scores[i] += temp_w
                ans += temp_w
                break

    print(ans)
profile
한걸음씩 꾸준히

0개의 댓글