해당 문제는 나무를 자른 나머지를 더할 때 total 값이 21억~~~(C++기준)을 넘어갈 까봐 Int32로 했지만 런타임 에러 발생..
그래서 인터넷에 찾아보니 Swift 기본 자료형 Int는 엄청 범위가 넓다;;
괜한 걱정을 했네..;
import Foundation
func binarySearchCutTree(arr: [Int], M: Int, start: Int, end: Int) -> Int{
var start: Int = start
var end: Int = end
var result: Int = 0
while start <= end{
let mid: Int = (start + end)/2
var total: Int = 0
// 필요한 나무만큼 자르기
arr.forEach { data in
if data >= mid{
total += data - mid
}
}
if total >= M{
start = mid + 1
result = mid
}
else{
end = mid - 1
}
}
return result
}
func cutTree(){
let input = readLine()!
.split(separator: " ")
.map({Int($0)})
let array = readLine()!.split(separator: " ").map({Int($0)!})
let M = input[1]!
print(binarySearchCutTree(arr: array, M: M, start: 1, end: array.max()!))
}
'알고리즘 > 탐색' 카테고리의 다른 글
백준[2110] 공유기 설치 (Swift) (0) | 2023.03.19 |
---|---|
백준[1654] 랜선 자르기 (Swift) (0) | 2023.03.19 |
백준[10816] 숫자 카드 2 (Swift) (0) | 2023.03.19 |
백준[2805] 나무 자르기 (0) | 2023.03.11 |
백준[10816] 숫자 카드 2 (0) | 2023.03.11 |