[2170] 선 긋기 (선의 총 길이 구하기)

2023. 6. 10. 01:09·Coding Test/Geedy
728x90
 

2170번: 선 긋기

첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다.

www.acmicpc.net

 

분석

  1. 선 배열 정렬
  2. 첫번째 선으로 시작
  3. 이어져있다면 끝이 더 큰걸로 연결하고, 끊어져있다면 길이 저장 후 새로 시작

 

풀이

"""
매우 큰 도화지에 자를 대고 선을 그으려고 한다.
선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다.
선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데,
여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자.
이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오.
선이 여러 번 그려진 곳은 한 번씩만 계산한다.

첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다.
다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다.
4
1 3
2 5
3 5
6 7
"""
import sys
input=sys.stdin.readline

n=int(input())
a=[]
for i in range(n):
    s,e=map(int, input().split())
    a.append((s,e))
a.sort()

start=a[0][0]
end=a[0][1]

ans = 0
for i in range(1,n):
    nowStart,nowEnd=a[i]
    if end>nowStart: # 이어져있다면 끝이 더 큰걸로 연결
        end = max(end, nowEnd)
    else: # 끊어져있다면 ans 저장하고 새로 시작
        ans+=(end-start)
        start,end=nowStart,nowEnd

ans += (end-start)
print(ans)

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Coding Test/Geedy' 카테고리의 다른 글
  • [8980] 택배
  • [1700] 멀티탭 스케줄링 (플러그 교체 최소 횟수)
  • [15903] 카드 합체 놀이 (우선순위 큐)
  • [1439] 뒤집기 (문자열)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이분탐색
    플로이드워셜
    구간합
    그리디
    BFS
    재귀
    동적계획법
    큐
    최소신장트리
    Algorithm
    백준
    구현
    자료구조
    최단거리
    LIS
    DP
    DFS
    다익스트라
    스택
    트리
    파이썬
    최대공약수
    알고리즘
    조합
    그래프
    프로그래머스
    정렬
    힙
    월간코드챌린지
    덱
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[2170] 선 긋기 (선의 총 길이 구하기)
상단으로

티스토리툴바