C++을 풀었을 때와 로직은 같지만 Swift에서 지원해주는 라이브러리들이 편리해서 코드를 간결하게 작성할 수 있는 것 같다.
import Foundation
func binarySearchCutLan(arr: [Int], start: Int, end: Int, target: Int) -> Int{
var start = start
var end = end
var result = 0
while(start <= end){
let mid = (start + end)/2
var total = 0
arr.forEach { data in
if data >= mid{
total += data / mid
}
}
if total >= target{
start = mid + 1
result = mid
}
else {
end = mid - 1
}
}
return result
}
func cutLan(){
let input = readLine()!.split(separator: " ").map({Int($0)})
let K = input[0]
let N = input[1]
var arrayK = [Int]()
for _ in 0..<K!{
arrayK.append(Int(readLine()!)!)
}
arrayK.sort()
print(binarySearchCutLan(arr: arrayK, start: 1, end: arrayK.max()!, target: N!))
}
'알고리즘 > 탐색' 카테고리의 다른 글
백준[2110] 공유기 설치 (Swift) (0) | 2023.03.19 |
---|---|
백준[2805] 나무 자르기 (Swift) (0) | 2023.03.19 |
백준[10816] 숫자 카드 2 (Swift) (0) | 2023.03.19 |
백준[2805] 나무 자르기 (0) | 2023.03.11 |
백준[10816] 숫자 카드 2 (0) | 2023.03.11 |