[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문도 계속 쓰게되고 메모리초과 시간초과가 발생하기 쉽다.

변수로 해결할 수 있으면 정렬 문제는 변수와의 관계로 해결하자.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 13164 Python  (0) 2021.10.05
[Boj/백준] 2075 Python  (0) 2021.10.04
[Boj/백준] 11497 Python  (0) 2021.10.04
[Boj/백준] 17129 Python  (0) 2021.09.30
[Boj/백준] 7576 Python  (0) 2021.09.29