[프로그래머스] 기지국 설치 (파이썬)

728x90
반응형

예시 

 

1 2 3 4 5 6 7 8 9 10 11 

cur (설치할 기지국 위치는 1에서 시작) 

 

w가 1인 경우

다음 기지국 설치 위치를 cur+2*w+1 하는 이유는 cur는 1을 기준으로 해도 사실상 2에 설치해서

1(기준 위치)~2(실제 설치 위치)~3을 커버하는 거라고 보면 된다

즉 기준위치는 cur인 1이지만 실제 설치 위치는 2인 것이고 cur+2*w+1이 다음 새로 설치 가능한지 보는 이유이다.

 

cur(기준 위치)가 stations[idx]-w (기존 기지국이 닿는 범위)보다 작아야 기존 기지국 위치와 겹치지 않는다.

겹친 다면 기지국이 닿는 오른쪽 전파범위 (stations[idx]+w)+1인 위치를 다음 기준 위치(cur)로 잡는다.

 

def solution(n, stations, w):
    answer = 0
    cur=1
    idx=0
    while cur<=n:
# 설치된 전파에 닿지 않는 위치라면
        if idx>=len(stations) or cur<stations[idx]-w:
            cur+=2*w+1
            answer+=1
        else:
            cur=stations[idx]+w+1
            idx+=1        
    return answer
728x90
반응형
TAGS.

Comments