본문 바로가기
스터디/알고리즘

기지국 설치

by 세졍 2024. 6. 24.

문제이해
N개의 아파트가 있고 stations배열의 아파트에 기지국이 설치되있을때 
기지국설치위치의 +W,-W까지 전파가 퍼진다
모든아파트가 전파가 퍼지도록 하는 기지국을 세울때 최솟값 기지국 개수

1.1번아파트 부터 차례로 검사한다 <= N

2. 기지국이 설치된 아파트의 -W의 위치거나 그이상일때 

3. 현재 위치를 바꿔주기 location = stations[idx] + W +1 , idx도 하나 증가시키고

4. 기지국의 범위가 아니라면 설치했다치고 그설치위치에서 최대의 범위 고려하고 +1 위치로 이동하기 

 

 

def solution(N,stations,W):
    answer = 0 # 기지국의 개수
    # 1번아파트부터 검사함 현재 아파트위치
    location = 1
    idx = 0 # 현재기지국을 나타내는 stations의 인덱스
    while location <= N:
        if idx < len(stations) and location >= stations[idx] - W :
            location = stations[idx] + W +1
            idx += 1
        else:
            location += 2*W +1
            answer += 1
    return answer



N = 11 # 아파트개수
stations = [4,11] # 현재 기지국이 설치되있음
W = 1 # 이만큼 양옆으로 퍼짐
# 모든 아파트에 다 전파가 전달되도록 최소로 기지국을 세울때 기지국의 최솟값 리턴
print(solution(N,stations,W))

 

 

idx < len(stations) and location >= stations[idx] - W  

순서 다르면 틀림.. 앞의 조건을 만족할때 뒤의 조건을 확인하므로 

'스터디 > 알고리즘' 카테고리의 다른 글

H-index  (0) 2024.07.06
디스크 컨트롤러  (1) 2024.07.01
귤고르기  (0) 2024.06.24
구명보트  (0) 2024.06.24
거스름돈(dp)  (0) 2024.06.23