🐸 문제 정보
🤖 알고리즘
그리디
정렬
⏱️ 풀이 시간
14.23
📝 풀이
랜덤 문제인데 연속으로 그리디가 나와서 신기했다.
문제 자체는 어렵지 않았으나, 처음에 하루를 24시간으로 생각하고 기상 시간의 최초 값을 24로 넣는 바보같은 실수를했다...
문제를 풀 때 지문은 그냥 꾸미기 위함일 뿐... 단어에 의미를 부여해서 읽으면 안되는데 진짜 바보같이!
여튼 풀이 과정은 아래와 같다.
- 마감 시간이 가장 늦고, 가장 오래 걸리는 작업 순으로 정렬
- 작업을 순회하면서, 현재까지 기상 시간과 보고 있는 작업의 마감 시간을 비교한다.
- 만약 마감 시간이 기상 시간보다 크다면, 기상시간 = 기상시간 - 작업 시간
- 나머지 경우에는 기상시간 = 마감 시간 - 작업 시간
- 마지막 기상 시간을 출력한다.
- 기상 시간이 0보다 작다면, 그날 작업은 불가능한 경우이므로 -1
- 0보다 크거나 같다면 해당 기상 시간 출력
🧑💻 나의 답
# pypy3
import sys
input = sys.stdin.readline
n = int(input())
tasks = sorted([tuple(map(int, input().rstrip().split())) for _ in range(n)], key=lambda x:[-x[1], -x[0]])
wakeup = sys.maxsize
for i in range(n):
if wakeup < tasks[i][1]:
wakeup = wakeup - tasks[i][0]
else:
wakeup = tasks[i][1] - tasks[i][0]
if wakeup > 0:
print(wakeup)
else:
print(-1)
'PS > 문제풀이' 카테고리의 다른 글
백준 3165 5 Python (1) | 2024.01.06 |
---|---|
백준 15724 주지수 Python (1) | 2024.01.06 |
백준 13305 주유소 Python (0) | 2024.01.06 |
프로그래머스 SQL 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.01.04 |
프로그래머스 SQL 서울에 위치한 식당 목록 출력하기 (1) | 2024.01.04 |