현인

[프로그래머스] 요격 시스템 with JavaScript 본문

알고리즘

[프로그래머스] 요격 시스템 with JavaScript

현인(Hyeon In) 2023. 9. 4. 20:10

문제

<LV2> 요격시스템

https://school.programmers.co.kr/learn/courses/30/lessons/181188?language=javascript 

소요시간

30분

풀이 계획

풀이 방법

  1. (s,e) 구간이 여러 개 주어지는 배열을 s를 기준으로 오름차순 정렬
  2. 첫 번째 원소의 e 값을 기록
  3. 두 번째 원소 부터 순차적으로 접근
    1. 현재 타겟의 s 값이 기록된 e 값 보다 크거나 같은 경우
      • answer 1 증가시킨다. (새로운 구간을 발견 했기에 요격할 미사일이 하나 더 필요해짐)
      • 기록된 e 값을 현재 타겟의 e 값으로 갱신
    2. 현재 타겟의 s 값이 기록된 e 값 보다 작은 경우
      • 현재 타겟의 e 값이 기록된 e 값 보다 작으면 e 값을 현재 타겟의 e 값으로 갱신 (기록하고 있는 구간안에 포함되는 구간을 처리하기 위함)

결과

정답 코드 

더보기
function compare(a, b) {
  if (a[0] < b[0]) {
    return -1;
  }
  if (a[0] > b[0]) {
    return 1;
  }
  return 0;
}

function solution(targets) {
    var answer = 1;
    targets.sort((a,b) => compare(a, b));

    var e = targets[0][1];
    
    targets.shift();
    
    targets.forEach((t)=> {
        if (t[0] >= e) {
            answer += 1;
            e = t[1];
        }
        else{
            e = t[1] < e ? t[1] : e;
        }
    })
    
    return answer;
}
반응형