μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- μκ³ λ¦¬μ¦
- Queue
- dfs
- SwiftUI
- WebApp
- λΉνΈμ°μ°μ
- λΆν μ 볡
- WebView
- λΆν μ 볡
- μ€ν
- 그리λ μκ³ λ¦¬μ¦
- λΈλ£¨νΈν¬μ€
- μμ
- λ°±μ€
- ios
- λ¬Έμμ΄
- BFS
- μ ν΄λ¦¬λ νΈμ λ²
- dp
- λΆν νμ
- μ΄μ§νμ
- μ½ν
- λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦
- Swift
- λ°±νΈλνΉ
- λμ ν©
- μ½λ©ν μ€νΈ
- νλ‘κ·Έλλ¨Έμ€
- Today
- Total
MUKER_DEV with iOS
[swift] λ°±μ€ - 1654λ²: λμ μλ₯΄κΈ° λ³Έλ¬Έ
λ¬Έμ νΈλ λ° μμ΄ λμμ΄ λλλ‘ λμ νμ΄μ κ°μ λ νμ΄λ₯Ό μ¬λ¦½λλ€.
λν νμ΄ ν λ€λ₯Έ μ¬λμ νμ΄λ₯Ό λ³΄κ³ μ°Έκ³ ν λ§ν νμ΄λ μ¬λ¦½λλ€.
- λ¬Έμ μ λ°λΌ λμ νμ΄λ§ μμ μ μμ΅λλ€.
- ν΄λΉ νμ΄λ€μ νμ΄ μ€ νλμΌ λΏ μ΅μ μ νμ΄λ μλ μ μμ΅λλ€.
λμ νμ΄
let KN = readLine()!.split(separator: " ").map { Int($0)! }
let arr = (0..<KN[0]).map { _ in Int(readLine()!)! }
var left = 1
var right = arr.max()!
while left <= right {
var count = 0
let mid = (left + right) / 2
for i in arr { count += (i / mid) }
if count < KN[1] { right = mid - 1 }
else { left = mid + 1 }
}
print(right)
- μ΄μ§νμμ μ¬μ©ν΄μ λ¬Έμ λ₯Ό ν μ μμμ΅λλ€.
- μ΄μ§νμμ μ λ ¬λ λ°°μ΄μμ νμν μ μμΌλ©°
left, right, mid λ³μλ₯Ό λ§λ€μ΄ ꡬνν μ μμ΅λλ€.
λ³μ μ΄λ¦μμ μ μ μλ―μ΄
leftλ λ°°μ΄μ μμκ°(μΈλ±μ€)
rightλ λ°°μ΄μ λ§μ§λ§κ°(μΈλ±μ€)
midλ λ°°μ΄μ μ€κ°κ°(μΈλ±μ€)
κ° λ©λλ€.
- ν΄λΉ λ¬Έμ λ₯Ό μ΄μ§νμμΌλ‘ νμ΄λ³΄κ² μ΅λλ€.
μ ν¬λ Nκ°λ‘ λλ μ§ μ μλ μ΅λκΈΈμ΄μ κ°μ ꡬνκ³ μμ΅λλ€.
λλλ λμ μ κΈΈμ΄λ μ΅μ 1cmλΆν°
μ£Όμ΄μ§ λμ μ κΈΈμ΄μ€ μ μΌ ν° κ°κΉμ§ λ€μ΄κ° μκ° μμ΅λλ€.
- μμ λ₯Ό μλ‘ λ€λ©΄
[802,743,457,539]μ λμ μ΄ μκ³
μ΅λ κΈΈμ΄μ λμ μ μ΅μ 11κ° λ§λ€κ³ μΆμ΄ ν©λλ€.
- μ΅λλ‘ μλ₯Ό μ μλ κΈΈμ΄λ λ°°μ΄μ maxκ°μΈ 802κ° λ©λλ€.
νμ§λ§ λ± 802cm κΈΈμ΄λ§νΌμ νλμ μ λ°μ μ»μ§ λͺ»νκ² μ£ .
κ·Έλ λ€λ©΄ λλμ‘μ 1cmλΆν° 802cm μμλ μ ν¬κ° μνλ
11κ°κ° λμ€λ μ΅λκΈΈμ΄κ° μμ κ²λλ€.
- min = 1
max = 802
mid = (min + max) / 2
κ°μ΄ κ°κ° λ€μ΄κ°κ² λ©λλ€.
- μ΄μ§νμμ ν΅μ¬μ minκ°μ΄ maxκ°μ μ΄κ³Όν λ
μ ν¬κ° μνλ κ°μ μμΉλ₯Ό μ°Ύμ μ μμ΅λλ€.
λ°λΌμ whileλ¬Έμ minκ°μ΄ maxκ°μ μ΄κ³Όν λκΉμ§
κ³μ°μ λ°λ³΅νκ² λ©λλ€.
- whileλ¬Έ μμμλ
arrλ°°μ΄ μμ μλ μ μ νλνλ midκ°λ§νΌ μλΌλ³΄λ κ²λλ€.
κ·Έλ¦¬κ³ μ³κ² μλΌμ§ μ μ κ°μλ§νΌ countμ λ£μ΅λλ€.
- midκ°μ΄ μμμλ‘ μ΄μ΄νκ² μλ₯΄κ² λλ μ μ κ°μλ λ§μμ§κ³
midκ°μ΄ λμμλ‘ μ μ κ°μλ μ μ΄μ§λλ€.
- λ§μ½ μνλ κ°μλ§νΌ μ μ΄ μ λμλ€λ©΄
midκ°μ μκ² ν΄μΌκ² μ£ ?
νμ¬ 802κ° λ€μ΄μμ maxκ°μ (mid-1) κ°μ λ£μ΄ μ€λλ€.
κ·ΈλΌ λ€μ λ°λ³΅μμλ
μμμ§ maxκ° μν₯μ λ°μ midλ μμμ§κ² λ©λλ€.
- λ°λλ‘ μνλ κ°μλ³΄λ€ μ μ΄ λ λμλ€λ©΄
midκ°μ ν¬κ² νκΈ° μν΄
minκ°μ (mid+1)μ λ£μ΄μ€λλ€.
- μ΄λ° μμΌλ‘ λ°λ³΅μ κ³μν΄ μ£Όλ€ λ³΄λ©΄
minκ°μ΄ maxκ°μ μ΄κ³Όνκ² λλ μκ°μ΄ μ€λλ°μ.
whileλ¬Έμ μ’ λ£λλ©°
- μ΅μ’ μ μΌλ‘ min(left): 201, max(right): 200μ΄ λ€μ΄κ° μμ΅λλ€.
λμ μ μ κ°μκ° κ΅μ°¨λλ μ§μ μμ λ©μΆκ² λ©λλ€.
leftμ κ°μΈ 201cmλ 10κ°κ° μ리κ³
rightμ κ°μΈ 200cmλ 11κ°κ° μ리λ μ΅λκ°μ΄ λ©λλ€.
- μ λ 볡μ΅ν κ²Έ λ¬Έμ λ₯Ό νμ΄μΌλ€ 보λ
λ³΄λ€ λͺ νν κ°λ μ μν΄μλ
μ΄μ§νμκ³Ό lower bound , upper boundλ₯Ό κ²μν΄μ 곡λΆν΄ 보μλ κ±Έ μΆμ²ν©λλ€.
'π€ μκ³ λ¦¬μ¦ > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[swift] λ°±μ€ - 2805λ²: λ무 μλ₯΄κΈ° (0) | 2023.02.17 |
---|---|
[swift] λ°±μ€ - 1874λ²: μ€ν μμ΄ (0) | 2023.02.17 |
[swift] λ°±μ€ - 1966λ²: νλ¦°ν° ν (0) | 2023.02.16 |
[swift] λ°±μ€ - 1929λ²: μμ ꡬνκΈ° (0) | 2023.02.15 |
[swift] λ°±μ€ - 10866λ²: λ± (0) | 2023.02.15 |