X 좌표 범위(start,end)를 가지고 가지고있는 타켓을 최소한의 미사일로 격추시키는 문제.
대부분의 풀이는 end를 기준으로 오름차순 정렬을 하여 구했지만
나는 start를 기준으로 오름차순정렬 + start가 같은 경우 end를 기준으로 오름차순 정렬로도 풀 수 있는 방법이 보여서 비슷하지만 조금 다르게 접근을 했다.
import java.util.*;
class Solution {
public int solution(int[][] targets) {
int answer = 0;
Arrays.sort(targets, (o1, o2) -> {
if(o1[0] == o2[0]) return o1[1] - o2[1];
return o1[0] - o2[0];
});
int front = 0;
int back = 100000000;
for(int[] t : targets){
if(t[0] >= back){
answer++;
front = t[0];
back = t[1];
}
else if(t[1] < back) back = t[1];
}
return answer+1;
}
}
사실 이 문제에서 테스트케이스 하나가 통과를 계속 못해서 시간을 엄청 많이 썻다.
이유는 end의 범위를 100,000,000으로 문제에서 정의했는데 실수로 코드에서 0을 하나 빼버려서 문제가 생겼다.....
알고리즘적인 문제가 아니라 이러한 단순 실수가 더 큰 타격을 줄 수 있다는 것을 또 한번 깨닫게 되었다...
이 글을 작성하는 이유도 이러한 단순 실수를 줄이고자 하기 때문....
다음부터는 상수값을 조금더 유심히 체크해야겠다.