[Baekjoon] 2565. 전깃줄

2025. 2. 11. 15:07·코딩테스트/Python
728x90
반응형

🔗 Problem Link

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


❔Thinking

  • 전봇대 A와 B를 연결하는 전깃줄이 겹치지 않도록 몇개를 제거할 때, 최소한의 개수를 반환한다.

💻Solution

import sys
from bisect import bisect_left
input = sys.stdin.readline

N = int(input().rstrip())
left = []
for _ in range(N):
    A, B = map(int, input().split())
    left.append([A,B])

left.sort()

def cross_check(line_list:list):
    prev = [line_list[0][1]]
    for a, b in line_list:
        if prev[-1] < b:
            prev.append(b)
        else:
            prev[bisect_left(prev, b)] = b
    return len(line_list) - len(prev)

print(cross_check(left))

🗝️keypoint

  1. 최장 증가 수열 (LIS)를 찾는 문제와 동일하다.
  2. 총 전깃줄의 개수에서 최장 증가 수열의 개수을 빼면, 제거하는 전깃줄의 수가 나온다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Programmers] Level 2. 도넛과 막대 그래프  (0) 2025.02.12
[Programmers] Level 2. 숫자 블록  (0) 2025.02.11
[Programmers] Level 2. 충돌위험 찾기  (0) 2025.02.09
[Baekjoon] 2573. 빙산  (0) 2025.02.07
[Programmers] Level 2. 3xn 타일링  (0) 2025.02.05
'코딩테스트/Python' 카테고리의 다른 글
  • [Programmers] Level 2. 도넛과 막대 그래프
  • [Programmers] Level 2. 숫자 블록
  • [Programmers] Level 2. 충돌위험 찾기
  • [Baekjoon] 2573. 빙산
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 2565. 전깃줄
상단으로

티스토리툴바