코딩테스트/Python

[Programmers] Level 2. 요격 시스템

swwho 2025. 1. 18. 13:32
728x90
반응형

🔗 Problem Link

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


❔Thinking

  • 개구간 (s, e)들이 주어질 때, 모든 구간을 통과하는 막대의 최소 개수를 반환한다.
  • s나 e에서는 해당 구간을 통과할 수 없다. 

💻Solution

def solution(targets):
    answer = 0
    targets = sorted(targets, key=lambda x: x[1])
    e = 0
    for i in range(len(targets)):
        if targets[i][0] >= e:
            answer += 1
            e = targets[i][1]
    return answer

🗝️keypoint

  1. 이 문제의 풀이 여부는, 모든 구간을 시작점이 아니라 끝점을 기준으로 정렬하는 데에 있다.
  2. 결과적으로, 구간을 하나씩 확인하면서 이전 구간의 끝점이 현재 구간의 시작점보다 크다면 (targets[i][0] >= e), 새로운 막대가 필요하다.