본문 바로가기
알고리즘/정렬

[Python] 백준 6068 시간 관리하기

by JayAlex07 2023. 1. 9.

🧑‍💻 [Python] 백준 6068 시간 관리하기

Gold 5 - 정렬

 

하루는 0 시간부터 시작한다

농부가 주어진 일을 끝내기 위해, 얼마나 더 잘 수 있는지 시간을 구하는 것이다

하루를 시작하는 시간을 구하는 것이기 때문에, 시작하는 시간 기준으로 문제를 해결하면 된다


 

문제 풀이

  • 입력을 받을 때, 일을 끝내기 위해 필요한 시간과, 일을 끝내야 하는 시간이 주어진다
  • 여기서 일을 끝내야 하는 시간 기준으로 오름차순으로 정렬을 한다
  • hour 같은 경우, 하루를 시작하는 기준이 0 이니깐, 0부터 시작을 한다
    • while문을 통해, 일을 끝내야 하는 시간 안에 모든 일들을 할 수 있으면 1씩 더해준다
  • time에 일을 끝내기 위해 필요한 시간을 계속 더해준다
    • 만약 여기서 time 이 일을 끝내야 하는 시간보다 더 커지게 되면, while문을 바로 끝내야 한다

 

코드

N = int(input())
work = []
for _ in range(N):
    work.append(tuple(map(int, input().split())))

work.sort(key=lambda x: x[1])
hour = 0
flag = True

while True:
    time = hour

    for i in range(len(work)):
        time += work[i][0]

        if time > work[i][1]:
            flag = False
            break

    if flag == True:
        hour += 1
    else:
        break

if hour != 0:
    print(hour - 1)
else:
    print(-1)

'알고리즘 > 정렬' 카테고리의 다른 글

[Python] 백준 1931 - 회의실 배정  (0) 2023.01.13
[Python] 백준 2437 저울  (1) 2023.01.11
[Python] 백준 1946 신입 사원  (0) 2023.01.09
[Python] 백준 1202 보석 도둑  (0) 2023.01.06
[Python] 백준 1253 - 좋다  (0) 2023.01.05