이 문제는 현재 제 역량으로는 안될 것 같아서 그냥 블로그 글을 참고하게 되었는데요.
결론만 말하자면 배열들의 각각의 0번 (x값 좌표)을 기준으로 오름차순 하고, for문을 돌려서 현재의 endpoint(y 좌표)가 x좌표보다 작을 경우, 즉 현재의 요격 선상에 다음 배열의 x부터 y까지의 바가 겹치지 않을 때 endpoint 값을 다음 배열의 y값으로 할당해주고 count를 증가시킨 후
그 다음 루프에서 endpoint가 x보다 클 경우 현재의 요격 선상에 겹치므로 다음 미사일(다음 배열 요소)을 선택하여 비교를 하는 것으로 정답을 구해나아가는 방식이더라고요.
물론 제가 현재 이해할 수준이 안되서 이것도 겨우 이해를 한거지만, 그래도 최대한 이해를 해보고 제가 현재 표현할 수 있는 코드대로 작성하여 코드 실행에서는 통과를 했는데, 정작 코드 제출에서는 테스트 케이스 11개 중 4개만 통과 되었더라고요.
음... 이것도 완탐의 문제인가 생각을 하는데, 나중에 다른 분들 풀이를 보고 이해라도 해야겠습니다.
function solution(targets) { let answer = 0; targets.sort((a, b) => a[0] - b[0]); let endPoint = 0; for(let i = 0 ; i < targets.length ; i++){ if(endPoint <= targets[i][0]){ endPoint = targets[i][1] answer++ continue; } } return answer; }