[Algorithm] 백준 - 나무 자르기 (이분탐색)

2024. 5. 2. 01:43· → Problems
목차
  1. 문제 소개
  2. 문제풀이
  3. 참고

문제 소개

나무를 어떻게 잘라야 하는지 결정해야하는 이진탐색 문제이다. 

 

문제풀이

이 문제를 보고 이진탐색을 바로 생각할 수 있는 이유는 어떠한 값을 넣게 되면 true, false로 나오게 되고, 어떠한 값들의 집합이 오름차순으로 되어있는 것을 볼 수 있다. 예를 들면 [1, 2, 3, 4, 5] 의 경우가 있을 때, 어떠한 로직에 의해서 [True, True, False, False, False] 로 바꿔줄 수 있다면 이진탐색으로 풀수있는 문제이다.

import Foundation

let nm = readLine()!.split(separator: " ").map { Int($0)! }
let (n, m) = (nm[0], nm[1])
let trees = readLine()!.split(separator: " ").map { Int($0)! }

func cut(_ height: Int) -> Bool {
    var get = 0
    
    for tree in trees {
        get += max(tree - height, 0)
    }
    
    if get >= m {
        return true
    } else {
        return false
    }
}

var low = -1
var high = trees.max()!

while low + 1 < high {
    let mid = (low + high) / 2
    
    if cut(mid) {
        low = mid
    } else {
        high = mid
    }
}

print(low)

 

참고

https://www.acmicpc.net/blog/view/109

이진탐색에 대한 가이드(?) 가 나와있다.

'→ Problems' 카테고리의 다른 글

[Algorithm] 백준 - 1260번 DFS와 BFS (Swift)  (0) 2024.05.10
[Algorithm] 백준 - 13023번 ABCDE (Swift)  (0) 2024.05.10
[Algorithm] 백준 - 카잉 달력 (Swift)  (0) 2024.04.22
[Algorithm] 백준 - 2156번 포도주 시식 (Swift)  (1) 2024.04.18
[Algorithm] 백준 - 1929번 소수구하기 (Swift) (에라토스테네스의 체)  (1) 2024.04.14
  1. 문제 소개
  2. 문제풀이
  3. 참고
'→ Problems' 카테고리의 다른 글
  • [Algorithm] 백준 - 1260번 DFS와 BFS (Swift)
  • [Algorithm] 백준 - 13023번 ABCDE (Swift)
  • [Algorithm] 백준 - 카잉 달력 (Swift)
  • [Algorithm] 백준 - 2156번 포도주 시식 (Swift)
Swift librarian
Swift librarian
Swift LibrarySwift librarian 님의 블로그입니다.
Swift librarian
Swift Library
Swift librarian
전체
오늘
어제
  • 분류 전체보기 (231)
    • 📺 Programming (5)
    • → Architecture (2)
    • → Design Pattern (0)
    • → Computer Science (15)
    • ⚙️ Algorithm (0)
    • → 알고리즘 관련 (22)
    • → Problems (104)
    • 🚀 Project (0)
    • → 알쏭달쏭 (0)
    • → Shook (2)
    • → Solver (8)
    • → Taster (7)
    • → Outline (4)
    • → Pointer (2)
    • → Guesser (3)
    • 🦜 Swift (2)
    • → Swift Archive (12)
    • → Swift Study (12)
    • → Xcode (6)
    • 🧰 Framework (0)
    • → Foundation (1)
    • → UIKit (2)
    • → SwiftUI (3)
    • → CoreData (2)
    • → MapKit (1)
    • → CoreHaptic (1)
    • → User Notification (1)
    • → StoreKit (2)
    • 🏛️ Library (0)
    • → TCA (0)
    • 🐈‍⬛ Git (8)
    • → Git의 원리 (2)
    • → Git 심화 (1)
    • 📦 Other (1)
    • 👦🏻 Log (0)

최근 글

hELLO · Designed By 정상우.v4.2.2
Swift librarian
[Algorithm] 백준 - 나무 자르기 (이분탐색)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.