Algorithm/Programmers

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

_silver 2025. 9. 12. 02:12


1. 문제 이해

- νšŒμ‚¬μ˜ 총 μ˜ˆμ‚°(budget) 은 μ •ν•΄μ Έ μžˆλ‹€.

- 각 λΆ€μ„œλŠ” μ›ν•˜λŠ” μš”μ²­ κΈˆμ•‘(d) 을 μ œμΆœν•œλ‹€.

- λΆ€μ„œλŠ” μš”μ²­ν•œ κΈˆμ•‘λ§ŒνΌ μ •ν™•νžˆ λ°›μ•„μ•Ό ν•˜λ©°, 덜 쀄 μˆ˜λŠ” μ—†λ‹€.

- μ΅œμ’… κ²°κ³Ό: μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œλ₯Ό μ§€μ›ν•˜λŠ” 것


2. 문제 μ ‘κ·Ό 방법

- κΈˆμ•‘μ΄ 큰 λΆ€μ„œλΆ€ν„° μ§€μ›ν•˜λ©΄ μ˜ˆμ‚°μ΄ 빨리 μ†Œμ§„λ˜μ–΄ 지원 κ°€λŠ₯ν•œ λΆ€μ„œ μˆ˜κ°€ 쀄어듀기 λ•Œλ¬Έμ— μž‘μ€ κΈˆμ•‘λΆ€ν„° μ§€μ›ν•˜λ„λ‘ ν•œλ‹€.

μ˜ˆμ‹œ1
- μš”μ²­ κΈˆμ•‘: [1, 3, 2, 5, 4]
- μ˜ˆμ‚°: 9

- μ •λ ¬ μ „: [1, 3, 2, 5, 4] → μ •λ ¬ ν›„: [1, 2, 3, 4, 5]
- μˆœμ„œλŒ€λ‘œ ν•©μ‚°
   - 0 + 1 = 1 (1 지원)
   - 1 + 2 = 3 (2 지원)
   - 3 + 3 = 6 (3 지원)
   - 6 + 4 = 10 → μ˜ˆμ‚° 초과, 쀑단

β˜‘οΈŽ 총 3개 λΆ€μ„œ 지원 κ°€λŠ₯

3. 문제 풀이
import java.util.Arrays;

class Solution {
    public int solution(int[] d, int budget) {
        
        // μ‹ μ²­ κΈˆμ•‘μ΄ μž‘μ€ λΆ€μ„œ λΆ€ν„° μ§„ν–‰ ν•˜λ„λ‘(μ˜€λ¦„μ°¨μˆœ)
        // κ·Έλž˜μ•Ό μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ ꡬ맀할 수 있음
        Arrays.sort(d);
        
        int budgetSum = 0;      // μ˜ˆμ‚° 합계
        int divisionCount = 0;  // μ‹ μ²­ λΆ€μ„œ 수
        
        for (int requestBudget : d) {
            if (budgetSum + requestBudget > budget) {
                break;
            }
            
            // μ˜ˆμ‚°μ΄ λ„˜μ§€ μ•ŠμœΌλ©΄
            // μš”μ²­ μ˜ˆμ‚°μ„ μ˜ˆμ‚° 합계에 ν•©μ‚° -> break κ±Έλ¦΄λ•ŒκΉŒμ§€
            budgetSum += requestBudget;
            
            // μ‹ μ²­ λΆ€μ„œ 수 카운트
            divisionCount++;
        }
        
        // μ΅œμ’… 지원 κ°€λŠ₯ν•œ λΆ€μ„œ 수 return
        return divisionCount;
    }
}

4. μ‹€ν–‰ κ²°κ³Ό

- μž…λ ₯: d = [1,3,2,5,4], budget = 9 → κ²°κ³Ό: 3

- μž…λ ₯: d = [2,2,3,3], budget = 10 → κ²°κ³Ό: 4

 

 


 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제 링크
μ°Έκ³  λΈ”λ‘œκ·Έ
GitHub 풀이 μ½”λ“œ