매일 조금씩

프로그래머스 level2 : 요격 시스템 - Java 본문

알고리즘

프로그래머스 level2 : 요격 시스템 - Java

mezo 2023. 6. 6. 00:41
728x90
반응형

스케줄링 문제와 매우 유사.

스케줄링 문제와 비슷하게 끝나는 시간을 기준으로 오름차순을 하고

반복문을 통해서 하나씩 시작점, 종점에 포함되는지 비교하면됨.

 

 

ㅡ케주

 

Arrays.sort(targets, (o1, o2) -> { 
    if(o1[1] == o2[1]) return o1[0] - o2[0];
    return o1[1] - o2[1];
});

위 코드로 종점을 오름차순 정렬.

 

import java.util.*;

class Solution {
    public int solution(int[][] targets) {
        int answer = 0;
        
        Arrays.sort(targets, (o1, o2) -> { 
            if(o1[1] == o2[1]) return o1[0] - o2[0];
            return o1[1] - o2[1];
        });
        
        int end = targets[0][1];
        answer++;
        
        for(int[] target: targets){
            // end가 구간에 들어가지 않는다면 end 재설정 , 요격수 증가
            if(target[0] >= end){   // 개구간이기때문에 =도 포함
                end = target[1];
                answer++;
            }
        }
        return answer;
    }
}
728x90
반응형