728x90
반응형
https://www.acmicpc.net/problem/15922
문제
아우으 우아으이야!! 으어아아아아아아아ㅏㅏㅏ아아앙ㅇ아아ㅏ
수직선 위에 선분을 여러 개 그릴 거 야아아앙ㅇ아아아ㅏㅏ아아ㅏㅏ!!
선분을 겹치게 그리는 것도 가능하다아어으우어우으아아아아아아아아아이야!!!!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
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 15927. 회문은 회문이 아니야!! (0) | 2023.09.09 |
---|---|
[Python/BOJ] 2565. 전깃줄 (0) | 2023.09.08 |
[Python/BOJ] 11497. 통나무 건너뛰기 (0) | 2023.09.05 |
[Python/BOJ] 15724. 주지수 (0) | 2023.09.05 |
[Python/BOJ] 1900. 레슬러 (0) | 2023.09.05 |