[프로그래머스] 요격 시스템

최동혁·2023년 5월 2일
0

1일 1코테 이상

목록 보기
5/10

풀이

  1. 타겟들을 정렬하고, 타겟 전체를 루프를 돈다.
  2. 미사일들의 끝 지점들 중 최소값이 처음으로 나가떨어지는 부분에서 answer를 하나 올린다.
    • 왜냐면 세로선을 그었을때 미사일이 추가되더라도 한 선으로 그을 수 있는 미사일 수가 최대가 되는 과정이고, 하나라도 나가 떨어진다면 그 전 값이 최대값이기 때문이다.
  3. 이전 미사일의 최소값과 현재 미사일의 최소값이 같다면 현재 나열되어 있는 미사일들의 끝 지점의 최소값만 갱신해주고 넘어간다.
  4. 세로선을 계속해서 그엇을때 겹치는 미사일의 갯수가 하나라도 빠지면 answer를 올려주는 로직이기 때문에, 모든 루프가 끝난다면 전체 답에 1을 더해줘야 한다.

코드

def solution(targets):
    answer = 0
    
    targets = sorted(targets, key=lambda x : (x[0], x[1]))

    min_num = 10000000000
    
    prev_num = 0

    for target in targets:
        if target[1] <= min_num:
            min_num = target[1]

        if prev_num != target[0]:
            if min_num <= target[0]:
                answer += 1
                min_num = target[1]

        prev_num = target[0]
    
    return answer + 1
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글