해당 미사일 범위의 마지막이 다음 미사일의 첫 부분보다 작으면, answer++한 뒤, 다음 미사일의 끝을 r로 변환.
function solution(targets) {
var answer = 1;
let len = targets.length;
// 앞을 오름차순으로 정렬, 앞이 같을 경우 뒤 역시 오름차순으로 정렬
targets.sort((a,b)=>a[0] === b[0] ? b[0] - a[0] : a[0] - b[0])
let r = targets[0][1]
for(var i =1; i<len; i++){
//해당 미사일 마지막이 다음 미사일 처음보다 클경우엔 그대로 진행
if(r > targets[i][0]){
//여기서 다음 미사일의 마지막부분이 현재 미사일 마지막부분보다 작을 경우엔 r을 다음 미사일의 마지막부분으로 바꾸어주어야한다. (이 생각하는데 오래걸림;;;)
if(r > targets[i][1]){
r = targets[i][1]
}
}else{
//범위 안에 들어오지 않을경우 answer++ 해준뒤, r을 다음 미사일 끝부분으로 변경.
answer++;
r = targets[i][1]
}
}
return answer
}
비교적 쉽게 문제를 풀었다고 생각했는데, 처음 제출에는 35점밖에 안나왔다. 분명 다른 예외케이스가 있다고 생각하여, 고민한 결과 다음미사일의 마지막범위가 현재 미사일의 마지막범위보다 작을경우 다음미사일의 마지막범위를 r로 잡아주는 것을 처리해줘야한다는 것을 꺠달았다. p.s 이 문제는 프로그래머스 LV3. 과속카메라 문제와 매우 흡사하므로, 과속카메라 문제를 풀어보는것도 추천한다!