Coding

[Programmers] μ˜ˆμ‚°

λ‚¨λ°”μ˜€ 2023. 3. 6. 16:34

https://school.programmers.co.kr/learn/courses/30/lessons/12982

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

문제 μ„€λͺ…

Sμ‚¬μ—μ„œλŠ” 각 λΆ€μ„œμ— ν•„μš”ν•œ λ¬Όν’ˆμ„ 지원해 μ£ΌκΈ° μœ„ν•΄ λΆ€μ„œλ³„λ‘œ λ¬Όν’ˆμ„ κ΅¬λ§€ν•˜λŠ”λ° ν•„μš”ν•œ κΈˆμ•‘μ„ μ‘°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, 전체 μ˜ˆμ‚°μ΄ μ •ν•΄μ Έ 있기 λ•Œλ¬Έμ— λͺ¨λ“  λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 수 μžˆλ„λ‘ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

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

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

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

 

Write Up

처음 μ΅œλŒ€ λͺ‡ 개 λΆ€μ„œμ— 지원할 수 μžˆλŠ”μ§€, λ‚˜μ€‘μ— κ·Έ λΆ€μ„œμ˜ 개수λ₯Ό λ°˜ν™˜ν•˜κΈ° μ‰¬μš°λ €λ©΄ pop을 μ‚¬μš©ν•˜λ©΄ 쒋을 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

그리고 μ΅œλŒ€ν•œ κΈˆμ•‘μ΄ 적은 λΆ€μ„œκ°€ λ§Žμ•„μ•Ό ν…ŒνŠΈλ¦¬μŠ€μ²˜λŸΌ μ—¬λŸ¬κ³³μ— 콕콕 λ“€μ–΄κ°ˆ 수 있기 λ•Œλ¬Έμ— 정렬을 ν•΄μ£Όμ—ˆλ‹€.

(λ§Œμ•½ μ˜ˆμ‚°μ΄ 5인 λΆ€μ„œκ°€ μžˆλ‹€λ©΄, 이 λΆ€μ„œλ³΄λ‹¨ 1,1,1,1,1인 λΆ€μ„œκ°€ 더 많이 지원해쀄 수 μžˆμœΌλ‹ˆκΉŒ !)

def solution(d, budget):
    d.sort()
    while sum(d) > budget:
        d.pop()
    return len(d)

이게 λ§žλŠ” 풀이인지 λ‹€λ₯Έ μ‚¬λžŒμ˜ μ½”λ“œλ„ λ΄€λŠ”λ° 이 풀이가 많이 λ“±μž₯ν•΄μ„œ ν–‰λ³΅πŸŒŸ

μ²˜μŒλΆ€ν„° pop을 μƒκ°ν–ˆλ‹€λŠ” 것이 문제λ₯Ό 빨리 ν’€ 수 μžˆμ—ˆλ˜ μ΄μœ μ˜€λ˜ 것 κ°™λ‹Ή