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 νμ΄ μ½λ