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
'컴퓨터' 카테고리의 다른 글
릿코드 - Longest Substring Without Repeating Characters (0) | 2021.11.03 |
---|---|
CS 총정리 - 개발 배경지식 (0) | 2021.10.19 |
CS 총정리 - Web 편 (0) | 2021.10.18 |
CS 총정리 - 데이터베이스 편 (0) | 2021.10.08 |
CS 총정리 - 운영체제 편 (0) | 2021.10.08 |