공부, 기록

백준 2170. 선 긋기 파이썬(PYTHON) 본문

코딩

백준 2170. 선 긋기 파이썬(PYTHON)

무는빼주세요 2020. 11. 14. 14:52

문제링크 : www.acmicpc.net/problem/2170

 

2170번: 선 긋기

첫째 줄에 선을 그은 횟수 N(1≤N≤1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점이 주어진다. 선택한 지점은 -1,000,000,000 이상 1,000,000,000 이하의 정수이다.

www.acmicpc.net

 

import sys
def solution(lines,N):
    lines.sort(key = lambda x:(x[0],-x[1]))
    answer = lines[0][1]-lines[0][0]
    tempstart=lines[0][0]; tempend=lines[0][1]
    for i in range(1,N):
        start = lines[i][0]
        end = lines[i][1]
        if start >= tempend:
            answer += end-start
            tempstart = start; tempend = end
        elif tempstart <= end <= tempend:
            continue
        elif start <= tempend and end >= tempend:
            answer+= end - tempend
            tempend=end
    return answer
def main():
    N = int(input())
    lines = list()
    for i in range(N):
        line = list(map(int,(sys.stdin.readline().split())))
        lines.append(line)
    print(solution(lines,N))

main()