λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
⌨️ Language/swift

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

by hyebin (Helia) 2023. 2. 16.
λ°˜μ‘ν˜•
ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LV.1 λͺ¨μŒ

μ˜ˆμ‚°

문제 μ„€λͺ…

Sμ‚¬μ—μ„œλŠ” κ° λΆ€μ„œμ— ν•„μš”ν•œ λ¬Όν’ˆμ„ μ§€μ›ν•΄ μ£ΌκΈ° μœ„ν•΄ λΆ€μ„œλ³„λ‘œ λ¬Όν’ˆμ„ κ΅¬λ§€ν•˜λŠ”λ° ν•„μš”ν•œ κΈˆμ•‘을 μ‘°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, μ „체 μ˜ˆμ‚°μ΄ μ •ν•΄μ Έ μžˆκΈ° λ•Œλ¬Έμ— λͺ¨λ“  λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜ μžˆλ„둝 ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ λ•ŒλŠ” κ° λΆ€μ„œκ°€ μ‹ μ²­ν•œ κΈˆμ•‘λ§ŒνΌμ„ λͺ¨λ‘ μ§€μ›ν•΄ μ€˜μ•Ό ν•©λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ 1,000원을 μ‹ μ²­ν•œ λΆ€μ„œμ—λŠ” μ •ν™•νžˆ 1,000원을 μ§€μ›ν•΄μ•Ό ν•˜λ©°, 1,000원보닀 μ μ€ κΈˆμ•‘을 μ§€μ›ν•΄ μ€„ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘이 λ“€μ–΄μžˆλŠ” λ°°μ—΄ d와 μ˜ˆμ‚° budget이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ΅œλŒ€ λͺ‡ κ°œμ˜ λΆ€μ„œμ— λ¬Όν’ˆμ„ μ§€μ›ν•  μˆ˜ μžˆλŠ”μ§€ return ν•˜λ„둝 solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.

μ œν•œ 사항

  • dλŠ” λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘μ΄ λ“€μ–΄μžˆλŠ” 배열이며, 길이(전체 λΆ€μ„œμ˜ 개수)λŠ” 1 이상 100 μ΄ν•˜μž…λ‹ˆλ‹€.
  • d의 각 μ›μ†ŒλŠ” λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘μ„ λ‚˜νƒ€λ‚΄λ©°, λΆ€μ„œλ³„ μ‹ μ²­ κΈˆμ•‘μ€ 1 이상 100,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • budget은 μ˜ˆμ‚°μ„ λ‚˜νƒ€λ‚΄λ©°, 1 이상 10,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

d budget result
[1,3,2,5,4] 9 3
[2,2,3,3] 10 4

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

  • 각 λΆ€μ„œμ—μ„œ [1원, 3원, 2원, 5원, 4원]만큼의 κΈˆμ•‘을 μ‹ μ²­ν–ˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½μ—, 1원, 2원, 4원을 μ‹ μ²­ν•œ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ£Όλ©΄ μ˜ˆμ‚° 9μ›μ—μ„œ 7원이 μ†ŒλΉ„λ˜μ–΄ 2원이 λ‚¨μŠ΅λ‹ˆλ‹€. ν•­μƒ μ •ν™•νžˆ μ‹ μ²­ν•œ κΈˆμ•‘만큼 μ§€μ›ν•΄ μ€˜μ•Ό ν•˜λ―€λ‘œ λ‚¨μ€ 2μ›μœΌλ‘œ λ‚˜λ¨Έμ§€ λΆ€μ„œλ₯Ό μ§€μ›ν•΄ μ£Όμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μœ„ λ°©λ²• μ™Έμ— 3개 λΆ€μ„œλ₯Ό μ§€μ›ν•΄ μ€„ λ°©λ²•듀은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • 1원, 2원, 3원을 μ‹ μ²­ν•œ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 μ£Όλ €λ©΄ 6원이 ν•„μš”ν•©λ‹ˆλ‹€.
    • 1원, 2원, 5원을 μ‹ μ²­ν•œ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 μ£Όλ €λ©΄ 8원이 ν•„μš”ν•©λ‹ˆλ‹€.
    • 1원, 3원, 4원을 μ‹ μ²­ν•œ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해주렀면 8원이 ν•„μš”ν•©λ‹ˆλ‹€.
    • 1원, 3원, 5원을 μ‹ μ²­ν•œ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해주렀면 9원이 ν•„μš”ν•©λ‹ˆλ‹€.
  • 3개 λΆ€μ„œλ³΄λ‹€ λ” λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜λŠ” μ—†μœΌλ―€λ‘œ μ΅œλŒ€ 3개 λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

  • λͺ¨λ“  λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 μ£Όλ©΄ 10원이 λ©λ‹ˆλ‹€. λ”°λΌμ„œ μ΅œλŒ€ 4개 λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

제좜

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var arr = d.sorted()
    var cnt = 0
    var re = 0

    for i in arr{
        re += i
        if re > budget{
            break
        }
        cnt += 1
    }
    return cnt
}
μž…λ ₯받은 배열을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
μ •λ ¬ν•œ λ°°μ—΄μ˜ μš”μ†Œλ“€μ„ μˆœμ„œλŒ€λ‘œ λ”ν•œλ‹€. λ§Œμ•½ 합이 budget보닀 λ§Žμ•„μ§€λ©΄ λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•œλ‹€.

λ‹€λ₯Έ 풀이

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var d = d.sorted(), budget = budget
    
    return d.filter{
        budget -= $0
        return budget >= 0
    }.count
    
}
μž…λ ₯받은 배열을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
filterν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ budgetμ—μ„œ λ°°μ—΄μ˜ μš”μ†Œμ˜ μ°¨λ₯Ό κ΅¬ν•œ ν›„, budget값이 0보닀 큰 경우의 수λ₯Ό λ°˜ν™˜ν•œλ‹€.
(budget = buget - λ°°μ—΄μ˜ μš”μ†Œ)

 

λ°˜μ‘ν˜•