https://school.programmers.co.kr/learn/courses/30/lessons/181188
문제 접근
앙증맞은 그림에 비해 생각보다 어려웠고 이해가 안되는 부분도 있었다.
람다식을 이용한 마지막 미사일 구간 오름차순 정렬이라던데 처음 봤다.
마지막 미사일 구간만 알면 미사일들 끼리 겹치는지 아닌지 알 수 있고 겹치는지만 알면 요격 지점을 어디로 두든 상관없다.
요격 지점은 실수 위치도 가능하기 때문
미사일 구간이 계속 겹치면 요격 지점을 추가하지 않고 겹치지 않으면 새로운 요격 지점을 추가하는 형태
import java.util.*;
class Solution {
public int solution(int[][] targets) {
int answer = 0;
Arrays.sort(targets, (o1, o2) -> {
return o1[1]- o2[1];
});
int last = -1;
for(int[] target : targets) {
if(last == -1) { // 처음 한 번은 무조건 실행
answer++;
last = target[1] -1; // 마지막 구간은 걸쳐있어도 요격 불가
}
if(last >= target[0] && last <= target[1]) continue; // 현재 저장된 마지막 요격 지점이 현재 구간에 포함되어 있다면 겹쳐서 요격 가능하기에 다음 미사일 좌표 탐색
// 구간에 포함 안되면 새로운 요격 미사일 추가, 마지막 요격 지점 변경
answer++;
last = target[1] -1;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 호텔 대실 / JAVA] (0) | 2023.05.30 |
---|---|
[프로그래머스 / 무인도 여행 / JAVA] (0) | 2023.05.29 |
[프로그래머스 / 연속된 부분 수열의 합 / JAVA] (1) | 2023.04.13 |
[프로그래머스 / 달리기 경주 / JAVA] (0) | 2023.04.11 |
[프로그래머스 / 추억 점수 / JAVA] (0) | 2023.03.31 |
댓글