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

Algorithm

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

λ°˜μ‘ν˜•

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

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

문제 μ„€λͺ…

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

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

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

μ œν•œμ‚¬ν•­

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

Code

import java.util.Arrays;
class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        int money = 0;
        Arrays.sort(d);
        for(int num: d){
            money += num;
            if(money>budget){
                break;
            }
            answer++;
        }
        return answer;
    }
}

Code μ„€λͺ…

λΆ€μ„œλ³„λ‘œ μ‹ μ²­ κΈˆμ•‘μΈ dλ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ 후에 κ°€μž₯ μž‘μ€ κΈˆμ•‘λΆ€ν„° λ”ν•΄κ°€λ©΄μ„œ answer에 카운트 ν•΄μ£Όκ³ 
budget보닀 컀지면 breakν•΄μ€€λ‹€

배운점

μ²˜μŒμ—λŠ” μ™„μ „ νƒμƒ‰μ΄λ‚˜ DP문제인 쀄 μ•Œκ³  μ–΄λ ΅κ²Œ μƒκ°ν•˜λ©΄μ„œ 해보닀가 1단계 λ¬Έμ œλ‹ˆκΉŒ 더 μ‰¬μš΄ 방법이 μžˆμ„κ²ƒ κ°™μ•„μ„œ
ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό λ³΄λ©΄μ„œ μƒκ°ν•΄λ³΄λ‹ˆκΉŒ κ°€μž₯ μž‘μ€ κΈˆμ•‘μ„ μ‹ μ²­ν•œ λΆ€μ„œλΆ€ν„° μ£Όλ©΄ κ°€μž₯ λ§Žμ€ λΆ€μ„œλ₯Ό 지원해 쀄 수 μžˆλŠ”κ²ƒμ„ κΉ¨λ‹¬μ•˜λ‹€.
κΉ¨λ‹«κ³  λ‚˜λ‹ˆκΉŒ λ¬Έμ œκ°€ λ„ˆλ¬΄ μ‰½κ²Œ ν’€λ Έκ³ , λ„ˆλ¬΄ μ‚½μ§ˆν•œ λŠλ‚Œμ΄ λ“€μ—ˆλ‹€.
문제λ₯Ό 많이 풀어봐야 μ΄λŸ°λŠλ‚Œμ΄ λ°”λ‘œ μ˜¬κ²ƒκ°™λ‹€.

λ°˜μ‘ν˜•