[프로그래머스 LV3] 기지국 설치

Junyoung Park·2022년 9월 12일
0

코딩테스트

목록 보기
612/631
post-thumbnail

1. 문제 설명

기지국 설치

2. 문제 분석

현재 커서를 1에서부터 시작, 주어진 기지국이 커버하는 지점까지의 범위를 사용해 최소 몇 개의 기지국을 새로 설치해야 하는지 더해 나간다. 현재 커서가 위치하는 곳에 기지국의 범위가 존재한다면 기지국을 설치할 필요가 없고, 모든 기지국을 살펴본 뒤 나머지 뒷부분 역시 새로 기지국을 설치해야 한다는 데 주의하자.

3. 나의 풀이

import Foundation

func solution(_ n:Int, _ stations:[Int], _ w:Int) -> Int {
    var total = 0
    let range = 2 * w + 1
    var cursor = 1
    for station in stations {
        if station - w <= cursor {
            cursor = station + w + 1
            continue
        }
        let coverage = station - w - cursor
        let q = coverage / range
        let r = coverage % range
        total += r == 0 ? q : (q + 1)
        cursor = station + w + 1
    }
    
    if cursor <= n {
        print(cursor)
        let coverage = n - cursor + 1
        let q = coverage / range
        let r = coverage % range
        total += r == 0 ? q : (q + 1)
    }
    return total
}
profile
JUST DO IT

0개의 댓글