PROGRAMMERS_Lv2_ํผ๋ก๋
๐ [Lv2_87946] ํผ๋ก๋
class Solution {
public boolean[] check;
public int answer = 0;
public int solution(int k, int[][] dungeons) {
check = 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(check[i]) continue;
// ์ต์ ํ์ ํผ๋ก๋๊ฐ ์์ผ๋ฉด ํต๊ณผ
if(dungeons[i][0] > k) continue;
// ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
check[i] = true;
dfs(depth+1,k-dungeons[i][1], dungeons);
// ๋ฐฑํธ๋ํน
check[i] = false;
}
answer = Math.max(answer,depth);
}
}
๐ค ๋์ ์๊ฐ
์์ ํ์์ ํตํด ํผ ๋ฌธ์ ์ด๋ค.
๋ง์ฝ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ธธ์๋ค๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ์ ํ
์ง๋ง ๋คํํ 8๊ฐ๊ฐ ์ต๋ ๊ฐ์์ฌ์ ์์ ํ์์ ํด๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋์ง ์๋๋ค.
dfs๋ฅผ ์ด์ฉํด ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํตํด ๋ชจ๋ ๋ฐฐ์ด์ ๋์์ฃผ๋ฉฐ ๋ง์ง๋ง์ ๊ฐ์ฅ ํฐ depth๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.