Lv.3 - 기지국 설치

·2022년 9월 17일
0

프로그래머스

목록 보기
16/18
post-thumbnail

예시1 : [4,11]에 기지국이 있고 범위 w가 1일 때.

  • 한 군데에 기지국 설치시 최대 3곳을 커버할 수 있다.
    -> 커버 가능한 범위는 1 + w * 2

  • 5와 10은 범위가 닿는 곳이니 pass.
    6,7,8,9 4군데가 공백이므로 2개는 설치해야 한다.
    -> 두 점 사이의 순수 공백 범위 blank 를 찾아서 범위만큼 나누면 된다.

주의 1: 맨 마지막 범위까지 검사해야 하기 때문에 n + w + 1을 범위에 추가한다.
주의 2: 맨 처음 범위도 검사가 필요하니 -w을 범위에 추가한다.

function solution(n, stations, w) {
  let answer = 0;
  const range = 1 + w * 2;

  const calc = (p1, p2) => {
    const blank = p2 - p1 - range;
    if (blank > 0) answer += Math.ceil(blank / range);
    return p2;
  };
  
  stations.push(n + w + 1);
  stations.reduce(calc, -w);
  return answer;
}
profile
모르는 것 투성이

0개의 댓글