[백준] 7983번 : 내일 할거야 (파이썬)



문제



나의 첫번째 답안(틀림)

import sys
input=sys.stdin.readline

n=int(input())
arr=[]
for i in range(n):
    d,t=map(int,input().split())
    arr.append([d,t])
arr.sort(key=lambda arr:arr[1],reverse=True)

time=arr[0][1]

for i in range(1,n):##############
    s=arr[i][0]
    e=arr[i][1]
    
    if time>=e:#다음 과제의 마감일이 시작일보다 이른 경우
        time=e-s
    else:#다음 과제의 마감일이 시작일보다 늦는 경우
        time=time-s
print(time)

다음 과제를 고려해주어야 한다고 생각해 두번째 반복문에서 1부터 n까지 반복하도록 하였다.
그러나 이렇게 하면 첫번째 과제를 고려하지 못하므로 반복문을 0부터 n까지로 설정해주어야 한다.

나의 답안

import sys
input=sys.stdin.readline

n=int(input())
arr=[]
for i in range(n):
    d,t=map(int,input().split())#소요일, 마감일
    arr.append([d,t])
arr.sort(key=lambda arr:arr[1],reverse=True)#마감일 기준 내림차순 정렬

time=arr[0][1]#과제를 시작해야 하는 날

for i in range(n):
    s=arr[i][0]
    e=arr[i][1]
    
    if time>=e:#마감일이 시작일보다 이른 경우
        time=e-s
    else:#마감일이 시작일보다 늦는 경우
        time=time-s
print(time)

접근 방법

  • 마감시간이 늦은 순서대로 나중에 해도 됨
  • 과제의 마감일(e)이 시작해야 되는 날보다 늦는다면 다른 과제를 수행하지 못하므로
    시작하는 날(time)에서 과제하는데 소요일(s)을 빼주어야 함
  • 아니라면 다른 과제에 영향을 주지 않으므로 마감일에서(e) 소요일(s)을 빼서 시작해야 하는 날(time)을 초기화해줌

좋은 웹페이지 즐겨찾기