[Boj문제풀이]
[Boj/백준] 7983 Python
ki7348
2021. 10. 4. 12:21
문제출처: https://www.acmicpc.net/problem/7983
7983번: 내일 할거야
내일(1일)부터 연속으로 최대 며칠 동안 놀 수 있는지를 출력한다. 가령, 답이 0이면, 내일 과제를 해야 하며, 1 이면, 모레에 과제를 해야 한다.
www.acmicpc.net
1. 문제 접근 방식
처음에는 리스트 두 개를 사용하려고 했는데 메모리 초과가 떴다.
해시함수처럼 입력을 받고 time이라는 변수를 두고
time과 arr[i][1]과의 관계를 따지면서
time값을 초기화 해줬다.
2. 내가 푼 코드
import sys
case = int(sys.stdin.readline())
arr = []
for _ in range(case):
arr.append(list(map(int,sys.stdin.readline().split())))
arr.sort(key=lambda x: x[1] ,reverse=True)
time = arr[0][1]-arr[0][0]+1
for i in range(1,len(arr)):
if arr[i][1]>= time:
time = arr[i][1] - arr[i][0] - (arr[i][1] - time)
else:
time = arr[i][1] - arr[i][0] + 1
print(time-1)
3. 결과 및 느낀점
당연히 리스트를 여러 개 쓰면 for문도 계속 쓰게되고 메모리초과 시간초과가 발생하기 쉽다.
변수로 해결할 수 있으면 정렬 문제는 변수와의 관계로 해결하자.