-
1263. [Python]시간 관리Python_알고리즘/Gold V 2023. 12. 21. 03:31
1. 문제
https://www.acmicpc.net/problem/1263
2. 접근 방법
- 시간 제한: 2초
- 메모리 제한: 128MB
- 정렬
3. 파이썬 코드
import sys input = sys.stdin.readline N = int(input()) # 일 시간 저장하는 리스트 work_lists = [] for _ in range(N): works = list(map(int,input().split())) work_lists.append(works) # 끝나는 시간순으로 정렬 work_lists.sort(key = lambda x:x[1]) # 최소 시간 저장 min_value = sys.maxsize # 현재 몇시간 일했는지 체크 current = 0 for i in work_lists: # 현재시간을 계속 더해나감 current += i[0] # 임시 변수 check 를 통해서 몇시간 여유가 있는지를 확인 check = i[1] - current # 만약 최소 시간보다 체크한 시간이 작은경우 if check < min_value: # 최소 시간 갱신 min_value = check # 최소 시간이 음수인경우 그 경우는 일을 처리할 수 없으므로 -1 출력 if min_value < 0: print(-1) break else: print(min_value)
4. 문제를 풀고난 후 생각
- 끝나는 시간을 기준으로 정렬을 진행한 후 현재 몇시간 일을 진행했는지에서 끝나야 하는 시간을 빼준 값들의 최소값을 계속 갱신해나간다.
- 시작 시간부터 걸리는 시간을 더해나가며 각 시간에서 몇시까지 끝내야 하는지 또한 얼마나 차이가 있는지 체크를 하며 최소값을 구하면 결국 낮잠을 잘 수 있는 시간이 되기 때문에 위와같은 생각을 했다.
5. 문제를 푸는데 도움이 되는 지식
- 정렬
'Python_알고리즘 > Gold V' 카테고리의 다른 글
9205. [Python] 맥주 마시면서 걸어가기 (0) 2024.02.18 1593. [Python]문자 해독 (1) 2023.12.28 1490. [Python]자리수로 나누기 (0) 2023.11.01 1374. [Python]강의실 (0) 2023.10.30 1245. [Python]농장 관리 (1) 2023.10.21