풀이
- 타겟들을 정렬하고, 타겟 전체를 루프를 돈다.
- 미사일들의 끝 지점들 중 최소값이 처음으로 나가떨어지는 부분에서 answer를 하나 올린다.
- 왜냐면 세로선을 그었을때 미사일이 추가되더라도 한 선으로 그을 수 있는 미사일 수가 최대가 되는 과정이고, 하나라도 나가 떨어진다면 그 전 값이 최대값이기 때문이다.
- 이전 미사일의 최소값과 현재 미사일의 최소값이 같다면 현재 나열되어 있는 미사일들의 끝 지점의 최소값만 갱신해주고 넘어간다.
- 세로선을 계속해서 그엇을때 겹치는 미사일의 갯수가 하나라도 빠지면 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