λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm

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

by 코딩곡책 2022. 11. 28.
λ°˜μ‘ν˜•

μ˜ˆμ‚°

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개 λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀해 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.


문제 풀이

d.sort둜 a,bλ₯Ό A-B μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬, for문을 μ΄μš©ν•΄ ν•©μΉœ κΈˆμ•‘μ΄ μ˜ˆμ‚°λ³΄λ‹€ λ§Žμ•„μ§€κΈ° μ „κΉŒμ§€λ§Œ ν•©μΉ˜λ„λ‘ 슀크립트λ₯Ό μ§ λ‹€.

function solution(d, budget) {
    var answer = 0;
    var sum = 0;
    
    d = d.sort(function(a, b){ return a-b; });

    for(var i=0; i<d.length; i++){
        sum += d[i];
        
        if(sum <= budget){
            answer++;
        }else{
            break;
        }
    }
    return answer;

λ‹€λ₯Έ 풀이 방식

ν•„ν„° λ©”μ„œλ“œλ‘œ ν•œ μ€„λ‘œ κ°„λ‹¨νžˆ ν’€μ–΄λ‚΄λŠ” 방법이 μžˆλ‹€.

var solution=(d,b)=> d.sort((a,b)=>a-b).filter(x=> b-x>=0?(b=b-x,1):0).length
λ°˜μ‘ν˜•

λŒ“κΈ€


Reference Book

JavaScript
HTML
CSS
κ΄‘κ³  μ€€λΉ„μ€‘μž…λ‹ˆλ‹€.