알고리즘/탐색

백준[2805] 나무 자르기 (Swift)

HJ39 2023. 3. 19. 17:15

해당 문제는 나무를 자른 나머지를 더할 때 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