본문 바로가기
Algorithm/문제풀이_프로그래머스

[Swift][프로그래머스][이분탐색] 입국심사

by Joahnee 2022. 5. 3.

요구능력

이분탐색

 

문제풀이

시간을 이용하여 이분탐색을 진행한다.

맨처음은 0분으로 설정했고, 가장 오래걸리는 시간은 times배열에서 심사하는데 가장오래걸리는사람 * n을 해주면된다.

left와 right를 비교해가며 이분탐색을 진행한다.

 

후기

이분탐색은 처음써보는데 쓸만한 알고리즘인거같다.

 

코드

import Foundation
func solution(_ n:Int, _ times:[Int]) -> Int{
    let time = times.sorted()
    var left = 0
    var right = n * time.last!
    while left <= right{
        let mid = (left + right) / 2
        var people = 0
        for i in time{
            people += (mid / i)
        }
        if people >= n{
            right = mid - 1
        }else if people < n{
            left = mid + 1
        }
    }
    return left
}

댓글