본문 바로가기
Algorithm

[구현/수학] 백준 29155 개발자 지망생 구름이의 취업 뽀개기 - 파이썬(Python)

by jangThang 2023. 9. 4.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    29155번: 개발자 지망생 구름이의 취업 뽀개기

    난이도 $1$에서 $1$분, $4$분, $4$분 순서로, 난이도 $2$에서 $5$분, 난이도 $3$에서 $20$분, 난이도 $4$에서 $40$분, 난이도 $5$에서 $100$분 순서대로 풀면 $1+3+4+0+4+60+5+60+20+60+40+60+100=417$분이 걸린다.

    www.acmicpc.net

     

     

    2. 문제 풀이

     난이도는 1부터 5까지 있으며, 문제 N개 중에서 풀어야 하는 난이도별 문제 개수가 주어집니다.

     다음 문제로 넘어갈 때 오버헤드가 있으며, 같은 난이도는 '두 문제를 푸는 데 걸리는 시간 차이' 만큼 필요하고 난이도를 증가시키는 경우에는 60분의 시간이 필요합니다.

     

     

    반응형

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    N = int(input())
    level = list(map(int, input().split())) # 난이도별 풀 문제
    
    exam = []
    for _ in range(N):
        exam.append(list(map(int, input().split())))
    
    exam.sort()
    res = 0
    before_level = 1
    before_time = 0
    first_clear = True
    
    for i, j in exam:
        if level[i-1] > 0:
            res += j
            level[i-1] -= 1
    
            # 처음 푼 경우
            if first_clear:
                first_clear = False
    
            # 난이도가 같은 경우
            elif before_level == i:
                res += (j - before_time)
    
            # 난이도가 다른 경우
            elif before_level != i:
                res += 60
    
            before_level = i
            before_time = j
    print(res)

     난이도별로 빨리 풀 수 있는 문제를 골라 풀면 됩니다.

     다만 다음 문제로 넘어가는 데에 걸리는 오버헤드 계산이 좀 어렵습니다. 처음 푸는 경우에는 오버헤드가 아예 존재하지 않으므로 더하지 않습니다.

     난이도가 같은 경우에는 문제 푸는 시간 차이만큼 더해주고, 난이도가 오른 경우에는 60을 더해줍니다. 

     

    star가 되고나서 Tistory

    반응형

    댓글