Search
Duplicate

기지국 설치

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(n, stations, w): answer = 0 # 그리디하게 해결해봅니다. # i가 커버가 안되면 i+w에 기지국을 세우고 i+2w + 1로 이동해서 반복합니다. # 이를 위해서 i가 커버가 되냐 안되냐를 빠르게 파악해야 합니다. # 계산 편의를 위해 기지국 위치를 0-based로 바꿉니다. stations = [s-1 for s in stations] stations.sort() # 이제 투 포인터로 해결합니다. i, j = 0, 0 while i < n and j < len(stations): if i < stations[j] - w: answer += 1 i = i + 2*w + 1 if stations[j] - w <= i <= stations[j] + w: i = stations[j] + w + 1 if i > stations[j] + w: j += 1 while i < n: answer += 1 i = i + 2*w + 1 return answer
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges