νΌλ‘λ (with.Java)
νΌλ‘λ (with.Java) λ¬Έμ μ λνμ¬ μμλ³Έ κΈμ λλ€.
μ½λ© ν μ€νΈ λ¬Έμ λ₯Ό νλ©°, νμλ λ¬Έμ μ λν νκ³ λ₯Ό ν΄λ³΄κ³ μ ν©λλ€.
λ¬Έμ μ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€.
λ¬Έμ
XXκ²μμλ νΌλ‘λ μμ€ν (0 μ΄μμ μ μλ‘ ννν©λλ€)μ΄ μμΌλ©°, μΌμ νΌλ‘λλ₯Ό μ¬μ©ν΄μ λμ μ ννν μ μμ΅λλ€.
μ΄λ, κ° λμ λ§λ€ ννμ μμνκΈ° μν΄ νμν βμ΅μ νμ νΌλ‘λβμ λμ ννμ λ§μ³€μ λ μλͺ¨λλ βμλͺ¨ νΌλ‘λβκ° μμ΅λλ€.
βμ΅μ νμ νΌλ‘λβλ ν΄λΉ λμ μ νννκΈ° μν΄ κ°μ§κ³ μμ΄μΌ νλ μ΅μνμ νΌλ‘λλ₯Ό λνλ΄λ©°, βμλͺ¨ νΌλ‘λβλ λμ μ ννν ν μλͺ¨λλ νΌλ‘λλ₯Ό λνλ λλ€.
μλ₯Ό λ€μ΄ βμ΅μ νμ νΌλ‘λβκ° 80, βμλͺ¨ νΌλ‘λβκ° 20μΈ λμ μ νννκΈ° μν΄μλ μ μ μ νμ¬ λ¨μ νΌλ‘λλ 80 μ΄μ μ΄μ΄μΌ νλ©°, λμ μ ννν νμλ νΌλ‘λ 20μ΄ μλͺ¨λ©λλ€.
μ΄ κ²μμλ ν루μ ν λ²μ© ννν μ μλ λμ μ΄ μ¬λ¬κ° μλλ°, ν μ μ κ° μ€λ μ΄ λμ λ€μ μ΅λν λ§μ΄ νννλ € ν©λλ€.
μ μ μ νμ¬ νΌλ‘λ kμ κ° λμ λ³ βμ΅μ νμ νΌλ‘λβ, βμλͺ¨ νΌλ‘λβκ° λ΄κΈ΄ 2μ°¨μ λ°°μ΄ dungeons κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ μ κ° ννν μ μλ μ΅λ λμ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- kλ 1 μ΄μ 5,000 μ΄νμΈ μμ°μμ λλ€.
- dungeonsμ μΈλ‘(ν) κΈΈμ΄(μ¦, λμ μ κ°μ)λ 1 μ΄μ 8 μ΄νμ λλ€.
- dungeonsμ κ°λ‘(μ΄) κΈΈμ΄λ 2 μ λλ€.
- dungeonsμ κ° νμ κ° λμ μ [βμ΅μ νμ νΌλ‘λβ, βμλͺ¨ νΌλ‘λβ] μ λλ€.
- βμ΅μ νμ νΌλ‘λβλ νμ βμλͺ¨ νΌλ‘λβλ³΄λ€ ν¬κ±°λ κ°μ΅λλ€.
- βμ΅μ νμ νΌλ‘λβμ βμλͺ¨ νΌλ‘λβλ 1 μ΄μ 1,000 μ΄νμΈ μμ°μμ λλ€.
- μλ‘ λ€λ₯Έ λμ μ [βμ΅μ νμ νΌλ‘λβ, βμλͺ¨ νΌλ‘λβ]κ° μλ‘ κ°μ μ μμ΅λλ€.
μ μΆλ ₯ μμ
k | dungeons | result |
---|---|---|
80 | [[80,20],[50,40],[30,10]] | 3 |
λ¬Έμ μ λν λμ νμ΄
class Solution {
public int answer = 0;
public boolean[] visit;
public int solution(int k, int[][] dungeons) {
visit = new boolean[dungeons.length];
dfs(0, k, dungeons);
return answer;
}
public void dfs(int depth, int k, int[][] dungeons) {
for (int i = 0; i < dungeons.length; i++) {
if(visit[i] || dungeons[i][0] > k){
continue;
} else{
visit[i] = true;
dfs(depth + 1, k - dungeons[i][1], dungeons);
visit[i] = false;
}
}
answer = Math.max(answer, depth);
}
}
νμ΄ μ€λͺ
λ§μ½ μ΅μ νμλκ° ν° μμλλ‘ νλ€λ©΄, [80,20],[50,40],[30,10]μΈλ° 3λ²μ§Έ λμ μ νμν μ μκΈ° λλ¬Έμ λΆκ°λ₯νκ³ , μλͺ¨ νΌλ‘λκ° μ μ μμλλ‘ νλ€λ©΄, [30,10], [80,20],[50,40]μΈλ° 첫 λ²μ§Έ λμ μ λλ©΄ λ¨μ νμλλ 70μ΄κΈ° λλ¬Έμ λ λ²μ§Έ λμ μ νμν μ μκΈ°μ λΆκ°λ₯ν©λλ€.
μ¦, μμ νμμ μ¬μ©ν΄ λͺ¨λ κ²½μ°μ μλ₯Ό νμνλ λ°©λ² λ°μ μμ΄ μ¬κ·ν¨μλ₯Ό μ΄μ©ν DFSλ‘ νμ΄νμ΅λλ€.
dfs λ©μλλ μ¬κ·μ μΌλ‘ νΈμΆλ©λλ€.
κ° νΈμΆμ νμ¬κΉμ§μ νμ κΉμ΄(depth), νμ¬ λ 벨(k), κ·Έλ¦¬κ³ λμ μ 보 λ°°μ΄(dungeons)μ μΈμλ‘ λ°μ΅λλ€.
λ°λ³΅λ¬Έμ ν΅ν΄ λ°©λ¬Ένμ§ μμ λμ μ€μμ μꡬ λ λ²¨μ΄ νμ¬ λ 벨 μ΄νμΈ λμ μ νμν©λλ€.
λ°©λ¬Ένμ§ μμ λμ μ€μμ κ°μ₯ λ¨Όμ λ°κ²¬λ λμ μ λ°©λ¬Ένκ³ , ν΄λΉ λμ μ μꡬ λ 벨μ νμ¬ λ 벨μμ λΊ κ°μΌλ‘ μ¬κ· νΈμΆν©λλ€.
μ¬κ· νΈμΆμ΄ μ’ λ£λλ©΄ ν΄λΉ λμ μ λ°©λ¬Έ μ¬λΆλ₯Ό λ€μ falseλ‘ λ³κ²½ν©λλ€.
κ²°λ‘
λͺ¨λ λμ μ νμνλ©΄μ μ΅λ νμ κΉμ΄λ₯Ό κΈ°λ‘νκ³ , μ΄λ₯Ό μ΅μ’ μ μΌλ‘ λ°νν©λλ€. μ΄ μ½λλ DFS μκ³ λ¦¬μ¦μ μ΄μ©νμ¬ λͺ¨λ κ°λ₯ν κ²½λ‘λ₯Ό νμνκ³ , κ·Έ μ€μμ μ΅λ νμ κΉμ΄λ₯Ό ꡬνλ κ°λ¨ν λ°©λ²μ μ μν©λλ€.