본문 바로가기

알고리즘 문제풀이

소가 길을 건너간 이유 3 (백준 14469)

  이웃 농장의 소가 길을 마구잡이로 건너는 것에 진절머리가 난 존은 극단의 결정을 내린다. 농장 둘레에 매우 큰 울타리를 짓는 것이다. 이렇게 하면 근처 농장 출신의 소가 들어올 일이 거의 없다. 이 일로 주변 소들이 분개하였다. 친구네 집에 놀러 갈 수 없을 뿐만 아니라, 매년 참가하던 국제 젖 짜기 올림피아드에도 올해는 참가할 수 없게 되었기 때문이다.

이웃 농장의 소 중 존의 농장에 방문할 수 있는 소가 조금 있긴 하지만, 그들도 안심할 수 있는 건 아니다. 존의 농장에 들어가는 문은 하나밖에 없고, 그 문을 통과하려면 감시관의 길고 긴 검문을 받아야 한다. 여러 마리의 소가 한 번에 들어가려고 하면 줄이 그 만큼 길어진다.

  N마리의 소가 이 농장에 방문하러 왔다. 소가 도착한 시간과 검문받는 데 걸리는 시간은 소마다 다르다. (물론 같을 수도 있다.) 두 소가 동시에 검문을 받을 수는 없다. 예를 들어, 한 소가 5초에 도착했고 7초 동안 검문을 받으면, 8초에 도착한 그 다음 소는 12초까지 줄을 서야 검문을 받을 수 있다.

  모든 소가 농장에 입장하려면 얼마나 걸리는 지 구해보자.

 

 해설 :  2마리 이상의 소가 검문을 같이 받을 수 없으니 소의 도착시간과 검사시간을 기준으로 정렬한 다음에 현재 도착한 소가 언제 검문을 받는 지 시간을 계속 확인해준다. 

 

import sys 
input = sys.stdin.readline 
n = int(input())
arr = []
for i in range(n) :
    a,b = map(int, input().split())
    arr.append((a,b))
    
new_arr =sorted(arr, key = lambda x : (x[0] , x[1]))
timeline = new_arr[0][0]
for i in range(n-1) :
    
    if timeline+new_arr[i][1]  < new_arr[i+1][0]:
        timeline= new_arr[i+1][0]
    else:
        timeline = timeline+new_arr[i][1] 
   
    
    
print(timeline+new_arr[n-1][1])

'알고리즘 문제풀이' 카테고리의 다른 글

행복 유치원(백준 13164)  (0) 2023.11.07
서강근육맨(백준 20300)  (0) 2023.11.04
총깡 총깡(백준 14618)  (2) 2023.10.29
햄버거 분배(백준 19941)  (0) 2023.10.29
증가 수열(백준 30236)  (0) 2023.10.16