2343号:その他のレッスン-Swift
https://www.acmicpc.net/problem/2343
難易度銀1🥈
アルゴリズム分類:二分ナビゲーション
🧐 質問へのアクセス
この問題は、Blu-rayのサイズを中間値として二分探索すると解決できます.
しかし、初めてlow=0、high=arr.reduce(0、+)に設定されたため、エラーが発生し続けた.
lowは最長のレッスンを含まなければならないのでarr.max()!に設定する必要があります.
完全なコード
難易度銀1🥈
アルゴリズム分類:二分ナビゲーション
🧐 質問へのアクセス
この問題は、Blu-rayのサイズを中間値として二分探索すると解決できます.
しかし、初めてlow=0、high=arr.reduce(0、+)に設定されたため、エラーが発生し続けた.
lowは最長のレッスンを含まなければならないのでarr.max()!に設定する必要があります.
完全なコード
//2343번 기타 레슨
let t = readLine()!.split(separator: " ").map{Int(String($0))!}
let (n,m) = (t[0],t[1])
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
func binarySearch() {
var low = arr.max()!, high = arr.reduce(0, +)
while low < high {
let mid = (low+high)/2
var cnt = 1
var sum = 0
for v in arr {
if sum + v > mid {
cnt += 1
sum = v
} else {
sum += v
}
}
if cnt <= m {
high = mid
} else {
low = mid + 1
}
}
print(high)
}
binarySearch()
一行の評価:これは簡単な問題ですが、もっと考えてから答えられると思います.Reference
この問題について(2343号:その他のレッスン-Swift), 我々は、より多くの情報をここで見つけました https://velog.io/@aurora_97/백준-2343번-기타-레슨-Swiftテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol