개발자 홍창기

Web Developer

프로그래머스 - 요격 시스템

Link

https://school.programmers.co.kr/learn/courses/30/lessons/181188

접근 방법

  • BOJ 회의실 배정과 정확히 똑같은 문제이다. 그리디 유형의 문제.
  • 문제 풀이도 똑같은 논리로 접근하면 된다.
  • 각 미사일의 길이 정보를 담은 targets 배열을 미사일의 최후방 좌표를 기준으로 오름차순 정렬해준다.
  • 이전 미사일의 최후방 좌표가 0이라고 가정하고, 정렬된 배열을 순차 탐색하며 해당 미사일의 최전방 좌표가 이전 미사일의 최후방 좌표보다 작다면, 최후방 좌표를 최전방 좌표로 갱신해준 뒤에 답을 1 증가시키면 된다.

Code

function solution(targets) {
  let answer = 0;
  let prevMissileStarts = 0;

  targets.sort((m1, m2) => {
    return m1[1] - m2[1];
  });

  for (const missile of targets) {
    const [nextMissileStarts, nextMissileEnds] = missile;
    if (prevMissileStarts <= nextMissileStarts) {
      answer += 1;
      prevMissileStarts = nextMissileEnds;
    }
  }

  return answer;
}