코딩 테스트
(Java) 프로그래머스 - 미사일 요격
로승리
2023. 11. 8. 11:13
오랜만에 풀어보는 알고리즘 문제였다.
왠지 문제가 그리디하게 접근하면 풀릴것 같아서 시도했더니 한시간만에 풀 수 있었다.
로직
첫번째로 targets 배열을 정렬해야 한다.
어떤 기준으로 정렬하냐가 중요한데, 나는 s를 오름차순으로 정렬했다가 최솟값에 맞지 않는다는 것을 깨닫고
e을 오름차순으로 정렬했다.
for문을 돌며 미사일이 날아오면 미사일의 시작지점인 s와 e중 한 지점에서 요격해야 한다.
미사일 하나에 맞춰서 요격을 하고 다음 미사일이 현재 요격 기준에 맞지 않으면
answer를 추가하고 요격 기준을 갱신하는 방식으로 생각하면 된다.
최종 코드
import java.util.*;
class Solution {
public int solution(int[][] targets) {
int answer = 0;
int end = 0;
Arrays.sort(targets, Comparator.comparingInt(o -> o[1]));
for(int i = 0; i < targets.length; i++) {
int s = targets[i][0];
int e = targets[i][1];
if(s >= end) {
end = e;
answer++;
}
}
return answer;
}
}