Coding Test/Baekjoon

[Python/BOJ] 15922. 아우으 우아으이야!!

NLP Developer 2023. 9. 8. 00:01
728x90
반응형

https://www.acmicpc.net/problem/15922

 

15922번: 아우으 우아으이야!!

N개의 선분을 모두 그렸을 때, 수직선 위에 그어진 선분 길이의 총합을 출력한다아아어으잉에애야우아으아이아야아아아아아아이야!!!

www.acmicpc.net

문제

아우으 우아으이야!! 으어아아아아아아아ㅏㅏㅏ아아앙ㅇ아아ㅏ

수직선 위에 선분을 여러 개 그릴 거 야아아앙ㅇ아아아ㅏㅏ아아ㅏㅏ!!

선분을 겹치게 그리는 것도 가능하다아어으우어우으아아아아아아아아아이야!!!!1

선분을 모두 그렸을 때, 수직선 위에 그려진 선분 길이의 총합은 얼마아아으으우어으이으야이야!!!!

입력

첫째 줄에 수직선 위에 그릴 선분의 개수 N이 주어진다아우으 우아으이야!!. (1 ≤ N ≤ 100,000)

둘째 줄 부터 N개의 줄에 좌표를 나타내는 정수쌍 (x, y)가 주어진다으어아아아아아아아ㅏㅏㅏ아아앙ㅇ아아.

이는 [x, y] 구간 (x와 y를 포함하는 구간)에 선분을 그린다는 의미이다유아아우응아이양. 

좌표는 x가 증가하는 순으로, x가 같다면 y가 증가하는 순으로 주어진다으우오아앙아ㅓㅇ아ㅡㅇ. (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)

출력

N개의 선분을 모두 그렸을 때, 수직선 위에 그어진 선분 길이의 총합을 출력한다아아어으잉에애야우아으아이아야아아아아아아이야!!!

풀이

Code

import sys
input = sys.stdin.readline

n = int(input())
array = [list(map(int, input().split())) for _ in range(n)]
# 1. start, end 설정
p_start, p_end = array[0][0], array[0][1]
# 2. 출력 변수 설정
answer = p_end - p_start
# 3.
for i in range(1, n) :
    start, end = array[i][0], array[i][1]
    # 3-1. 이전의 end 값이 현재 end 값보다 클 경우
    if p_end >= end : continue
    # 3-2. 이전의 end 값이 현재 start 값보다 클 경우
    elif p_end > start : start = p_end
    # 3-3. 결과 더하기
    answer += end - start
    # 3-4. 이전의 start, end 값 재정의
    if p_end < end :
        p_start, p_end = start, end
# 4. 결과 출력
print(answer)
728x90
반응형