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

우노구나·2025년 6월 30일

문제설명

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을 하나 빼버려서 문제가 생겼다.....
알고리즘적인 문제가 아니라 이러한 단순 실수가 더 큰 타격을 줄 수 있다는 것을 또 한번 깨닫게 되었다...
이 글을 작성하는 이유도 이러한 단순 실수를 줄이고자 하기 때문....
다음부터는 상수값을 조금더 유심히 체크해야겠다.

profile
기술 블로그

0개의 댓글