Focus On Develop 🀟🀟

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ˜ˆμ‚° λ³Έλ¬Έ

iOS [Swift]/μ•Œκ³ λ¦¬μ¦˜

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ˜ˆμ‚°

λˆ„λ¦¬λ‹¬μ΄ν‹€ 2020. 12. 21. 15:17

<문제>


<μ „λž΅μ§œκΈ°>

음.. 보톡 μ΄λ ‡κ²Œ 생긴 λ¬Έμ œλŠ” DP(Dynamic Programming) μ΄μ—ˆλ˜ 것 같은데.. 😭 (잘 기얡이..) μ•”νŠΌ μ–΄λ €μš΄ DP..

ν•„μš” μ˜ˆμ‚°μ΄ 적은 λΆ€μ„œλΆ€ν„° μˆœμ„œλŒ€λ‘œ μ§€μ›κΈˆμ„ 주게 되면 제일 λ§Žμ€ λΆ€μ„œμ˜ '수'κ°€ λ‚˜μ˜€λŠ” 것은 상식적인 논리인데.. κ·Έλ ‡κ²Œ ν–ˆμ„λ•Œ μ˜ˆμ™Έ μΌ€μ΄μŠ€κ°€ μžˆμ„μ§€ ν•œμ°Έμ„ κ³ λ―Όν•œ 것 κ°™λ‹€. (그럼 DPν–‰....πŸ˜” πŸ˜”) 근데 λ”±νžˆ μ˜ˆμ™ΈμΌ€μ΄μŠ€κ°€ 생각이 μ•ˆλ‚˜μ„œ..? 일단 μ •λ ¬ν•΄μ„œ μ˜ˆμ‚°μ΄ 적은 μˆœμ„œλŒ€λ‘œ ν•œλ²ˆ μ§€μ›ν•΄λ³΄κΈ°λ‘œ ν•˜κ³ , μ˜ˆμ‚°μ„ λ‹€μ“°λ©΄ λ’· λΆ€μ„œλŠ” 보지도 μ•ŠλŠ”κ±Έλ‘œ.. ν’€λŸ¬ κ³ κ³ μ‹± γ…‹γ…‹

 

<μ½”λ“œ>

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    let array = d.sorted()
    var result = 0
    var curBudget = budget
    
    for d in array {
        if d <= curBudget {
            result += 1
            curBudget -= d
        } else {
            return result
        }
    }
    return result
}

 

<Lesson Learned>

응..?? μ•„λ‹ˆ..!? DPκ°€ μ•„λ‹ˆμ˜€λ„€!? γ…‹γ…‹ μ•„λ‹ˆλ©΄ λ§žμ•˜λŠ”λ° μ‹œκ°„μ œν•œμ΄ μ—¬μœ λ‘œμ› κ±°λ‚˜.. πŸ™ Whatever.. ν•˜κΈ΄ 근데 λΆ€μ„œμ˜ μ΅œλŒ€ κ°―μˆ˜κ°€ 100개면 λ”±νžˆ μ‹œκ°„μ œν•œμ€ 생각 μ•ˆν•΄λ„ 됐긴 ν•˜κ² λ‹€. λ‚˜λŠ” μ΄λ ‡κ²Œ λ°˜λ³΅λ¬Έμ„ λŒλ €μ•Ό ν•˜λŠ” 문제면 κ°€λŠ₯ν•œ 반볡문의 쀑단을 빨리 ν•˜κ²Œλ” κ·Έ.. 경계점(?) 경계가 λ˜λŠ” μˆœκ°„(?)을 생각해놓고 μ‹œμž‘ν•œλ‹€. (이 문제의 κ²½μš°λŠ” μ˜ˆμ‚°μ΄ λ–¨μ–΄μ Έμ„œ 더이상 지원을 λͺ»ν•΄μ£ΌλŠ” μˆœκ°„) 사싀, 이 λ¬Έμ œλŠ” λ‚΄κ°€ μ“°κ³  μ‹Άμ–΄ν•˜λŠ” filterλ₯Ό μ μš©ν•  μˆ˜λ„ μžˆμ—ˆμ„ 것 같은데.. 그런 λ°˜λ³΅λ¬Έμ„ μ€‘λ‹¨μ‹œν‚€κ³  싢은 μˆœκ°„μ„ λ§Œλ‚¬μ„λ•Œ λ©ˆμΆ”λŠ” κ±Έ λͺ¨λ₯΄κ² μ–΄μ„œ.. πŸ’ 크게 상관없닀면 μ•„λž˜μ²˜λŸΌ 풀어도 될 것 κ°™λ‹€.

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var curBudget = budget

    return d.sorted().filter{
        curBudget = curBudget - $0
        return curBudget >= 0
    }.count
}

 

 

μΆœμ € : ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ˜ˆμ‚°

Comments