본문 바로가기

컴퓨터

프로그래머스 - 기지국 설치

def solution(n, stations, w):
    answer = 0
    coverRange = 2 * w + 1
    underCover = []
    start = stations[0] - w
    end = stations[0] + w

	# 간격 구하기
    if start > 1: underCover.append([1, start])
    for i in range(1, len(stations)):
        curStart, curEnd = stations[i] - w, stations[i] + w
        if end + 1 < curStart: underCover.append([end + 1, curStart])
        end, start = curEnd, curStart
    if end < n: underCover.append([end + 1, n + 1])

	# 구한 간격 계산
    for i, j in underCover:
        myRange = j - i
        if myRange % coverRange:
            answer += myRange // coverRange + 1
        else:
            answer += myRange // coverRange

    return answer

 

1. 기지국의 영향을 받지 않는 부분들의 간격을 구한다.

2. 간격을 기지국1개당 커버 범위로 나눈다. 나누어떨어지지 않으면 1을 더한다.

 

 

 

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

 

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

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

programmers.co.kr