본문 바로가기

프로그래머스/구현

[구현] 프로그래머스 '기지국 설치' - js

반응형

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 코드

처음엔 아파트 길이만큼의 배열 만들어주고 0,1 비교해주는 식으로 했는데.. 코드도 꼬이고 해결도 못했다.

이렇게 간단한 코드로 해결 가능하다니...ㅠㅠ

function(n, stations, w) => {
    let answer = 0;
    // 기지국 번호가 1부터 시작하니 start는 1, 인덱스는 0부터 시작
    let index = 0; // stations내 요소들 가리키는 inx
    let start = 1; // 아파트 번호
    
    while(start <= n){
        // 현재 start가 stations[index] + w, stations[index] - w 사이의 값이라면 
        // 기지국을 설치할 필요가 없기 때문에 index와 start를 갱신하여 넘어감
        if(start >= stations[index] - w && start <= stations[index] + w){
        	// 전파 도달 마지노선 아파트로 start 재할당. 그 다음 아파트 비교하기 위함.
            start = stations[index] + w;
            // 다음 기지국 설치 아파트 번호로 넘어가서 범위 비교할 수 있도록 +1
            index++;
        } else{
            // 기지국을 설치해야 하기 때문에 answer+1과 start + 2 * w
            // 새로 기지국 설치 후, 전파 도달 마지노선 아파트로 start 옮기기
            start += 2 * w;
            answer++;
        }
        // 다음 아파트 비교할 수 있도록 +1
        start++;
    }
    
    return answer;
}
반응형