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

거북이·2023년 7월 4일
0

백준[골드5]

목록 보기
54/82
post-thumbnail

💡문제접근

  • [예제입력1]의 테스트 케이스를 분석해보면 다음과 같이 이해할 수 있다.
    #1 : 2분에 기상해서 3분동안 일을 하고 5분이 된다.
    #2 : 5분부터 8분동안 일을 하고 13분이 된다.
    #3 : 13분부터 1분동안 일을 하고 14분이 된다.
    #4 : 14분부터 5분동안 일을 하고 19분이 된다.

결국 존은 제 시간에 일을 끝낼 수 있게 결정할 수 있는 한도에서 존이 가장 늦게 일어날 수 있는 시간은 2분이다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

N = int(input())
t = 0
Time = []
for _ in range(N):
    S_i, T_i = map(int, input().strip().split())
    Time.append([S_i, T_i])

# 끝나는 시간을 기준으로 오름차순 정렬을 수행
Time = sorted(Time, key = lambda x : x[1])

total_time = 0
result = float('INF')
for t, s in Time:
	# 총 누적 시간
    total_time += t
    # 만약 일을 s - t의 값이 음수가 나오면 일을 끝낼 수 없으므로 0을 출력
    result = min(result, s - total_time)
    if result < 0:
        print(-1)
        sys.exit(0)
print(result)

💡소요시간 : 17m

0개의 댓글