λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
κ°œμΈκ³΅λΆ€/Algorithm

[Level 1] μ˜ˆμ‚°

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2021. 5. 4.

 

 

 

Algorithm

-  μ˜ˆμ‚° -

 


 

문제

Sμ‚¬μ—μ„œλŠ” 각 λΆ€μ„œμ— ν•„μš”ν•œ λ¬Όν’ˆμ„ 지원해주기 μœ„ν•΄ λΆ€μ„œλ³„λ‘œ λ¬Όν’ˆμ„ κ΅¬λ§€ν•˜λŠ”λ° ν•„μš”ν•œ κΈˆμ•‘μ„ μ‘°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜, 전체 μ˜ˆμ‚°μ΄ μ •ν•΄μ ΈμžˆκΈ° λ•Œλ¬Έμ— λͺ¨λ“  λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 수 μžˆλ„λ‘ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

 

λ¬Όν’ˆμ„ ꡬ맀해 쀄 λ•ŒλŠ” 각 λΆ€μ„œκ°€ μ‹ μ²­ν•œ κΈˆμ•‘λ§ŒνΌμ„ λͺ¨λ‘ 지원해 μ€˜μ•Ό ν•©λ‹ˆλ‹€.

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

 

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

 

μž…μΆœλ ₯ μ˜ˆμ‹œ

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

 

문제 ν’€κΈ°

 

이번 λ¬Έμ œλŠ” 정해진 μ˜ˆμ‚°μœΌλ‘œ μ–Όλ§ˆλ‚˜ λ§Žμ€ λΆ€μ„œμ—κ²Œ λ‚˜λˆ μ€„ 수 μžˆλŠλƒμ— λŒ€ν•œ 문제둜 문제의 길이가 κΈΈμ–΄μ„œ 쑰금 겁을 λ¨Ήμ—ˆμœΌλ‚˜ ν’€λ•ŒλŠ” λ‹€ν–‰νžˆ μ—„μ²­ μ–΄λ €μš΄ νŽΈμ€ μ•„λ‹Œκ²ƒ κ°™μ•˜λ‹€.

 

일단 μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ—κ²Œ λ‚˜λˆ μ£ΌλŠ” 방법은 κ°€μž₯ 적은 κΈˆμ•‘μ„ μ‹ μ²­ν•œ λΆ€μ„œλ“€μ—κ²Œ λ‚˜λˆ μ£ΌλŠ”κ²Œ 큰 κΈˆμ•‘μ„ μ‹ μ²­ν•œ λΆ€μ„œλ“€μ—κ²Œ λ‚˜λˆ μ£ΌλŠ” 것 보닀 더 λ§Žμ€ λΆ€μ„œμ—κ²Œ λ‚˜λˆ μ€„ 수 μžˆμ„κ±°λΌκ³  μƒκ°ν•΄μ„œ 일단 dμ—μ„œ λ°°μ—΄λ‘œ λ°›μ•„μ˜€λŠ” κΈˆμ•‘μ„ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬을 μ‹œμΌœμ£Όμ—ˆλ‹€.

 

그리고 leftMoney와 countλΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ λ°˜λ³΅λ¬Έμ„ 톡해 남은 μ˜ˆμ‚°μ„ 확인할 수 μžˆλ„λ‘ leftMoneyμ•ˆμ— 값을 λ„£μ–΄μ£Όκ³ , μ˜ˆμ‚°μ„ λΆ€μ„œμ—κ²Œ λ‚˜λˆ μ€„λ•Œ λ§ˆλ‹€ 카운트λ₯Ό 올릴수 μžˆλ„λ‘ countμ•ˆμ— 값을 λ„£μ–΄μ£Όμ—ˆλ‹€.

 

κ·Έ 이후 λ°˜λ³΅λ¬Έμ•ˆμ—μ„œ μ˜ˆμ‚°μ„ λ‚˜λˆ μ£Όκ³  countλ₯Ό μ˜¬λ €μ£ΌλŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰μ‹œμΌœμ£Όλ©° μ΄λ•Œ leftλ¨Έλ‹ˆκ°€ 0보닀 μž‘μ€κ°’μ΄ λ‚˜μ˜¬κ²½μš° (= μ˜ˆμ‚° μ—†μŒ) break문을 μ‚¬μš©ν•΄ λ°˜λ³΅λ¬Έμ„ λ²—μ–΄λ‚˜κ³  countλ₯Ό μ΅œμ’…μ μœΌλ‘œ 리턴할 수 μžˆλ„λ‘ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ μ£Όμ—ˆλ”λ‹ˆ λ¬Έμ œκ°€ μ œλŒ€λ‘œ ν•΄κ²°λ˜λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€