기지국 설치 (프로그래머스)
https://school.programmers.co.kr/learn/courses/30/lessons/12979#qna
문제 설명
N개의 아파트가 일렬로 쭉 늘어서 있습니다.
이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다.
기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다.
그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아,
4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다.
아파트의 개수 N,
현재 기지국이 설치된 아파트의 번호가 담긴 1차원 배열 stations,
전파의 도달 거리 W가 매개변수로 주어질 때,
모든 아파트에 전파를 전달하기 위해 증설해야 할 기지국 개수의 최솟값을 리턴하는 solution 함수를 완성해주세요
풀이
전파가 전달된 범위를 저장하는 변수와
기지국을 설치했을시 전파의 범위를 계산한 변수를 선언하고
배열 stations만큼 반복문을 돌면서
전파가 도달하지 않는 범위를 계산하고
기지국이 몇개나 들어갈 수 있는지 계산하면 정답을 구할 수 있습니다
function solution(n, stations, w) {
var answer = 0;
let power = 1;
let range = w * 2 + 1;
for (let i = 0; i < stations.length; i++) {
if (stations[i] - w > power) {
answer += Math.ceil((stations[i] - w - power) / range);
}
power = stations[i] + w + 1;
}
answer += Math.ceil((n - power + 1) / range);
return answer;
}