본문 바로가기
Programming/Programmers

[프로그래머스] 기지국 설치 (Python)

by 데이터현 2021. 11. 23.

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

 

코딩테스트 연습 - 기지국 설치

N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5

programmers.co.kr

N의 범위를 보면 N: 200,000,000 이하의 자연수라 되어있기 때문에 N을 기준으로 풀면 시간 초과가 난다.

따라서 stations을 바탕으로 알고리즘을 생각했다.

해당 기지국의 커버 범위에 따라 추가해야 하는 기지국 값을 answer에 추가해준다.

 

나의 풀이

def solution(n, stations, w):
    start = 1
    answer = 0
    for station in stations:
        if start > n:
            return answer
        end = station-w-1
        if start > end:
            start = station+w+1
            continue
        else:
            counting = end - start + 1
            answer += counting//(2*w+1) if counting%(2*w+1) == 0 else counting//(2*w+1) + 1
            start = station+w+1
    counting = n - start + 1
    answer += counting//(2*w+1) if counting%(2*w+1) == 0 else counting//(2*w+1) + 1
    return answer

 

댓글