https://school.programmers.co.kr/learn/courses/30/lessons/87946
1. ๋ฌธ์
ํ์ฌ ํผ๋ก๋ k, ๋์ ์ด์ฐจ์ ๋ฐฐ์ด([0]: ์ต์ ํ์ ํผ๋ก๋, [1]: ์๋ชจ ํผ๋ก๋)์ด ์ฃผ์ด์ก์ ๋
์ ์ ๊ฐ ํํํ ์ ์๋ ์ต๋ ๋์ ์์ด๋ค.
๋์ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๊ฐ ์๋ฅผ ๋ค์ด [80,20]์ผ ๊ฒฝ์ฐ, ์ฒซ๋ฒ์งธ ๋์ ์ ์ ์ฅํ๋๋ฐ ํ์ํ ์ต์ ํผ๋ก๋๋ 80, ์ ์ฅ ํ ์๋ชจ๋๋ ํผ๋ก๋๋ 20์ธ ๊ฒ์ด๋ค.
2. ํ์ด
์์ด ๋ฌธ์ ์ด๋ค.
๋์ ์ ์์๋ฅผ ์์ด๋ก ์ค์ธ์ ๊ฐ์ฅ ๋ง์ด ์ ์ฅํ ์ ์๋ max ๊ฐ์ ๊ฐฑ์ ํ์ฌ ๋ต์ ๊ตฌํ๋ค.
1. ์์ด ํจ์ ๋ค์ด์ค์๋ง์ max์ cnt๊ฐ์ ๋น๊ตํ์ฌ max๋ฅผ ๊ฐฑ์ ํด์ฃผ์๋ค. ์ฌ๊ธฐ์ cnt๋ ๋์ ์ ์ฅ ํ์์ด๋ค.
2. ์ ํจ์ฑ ๊ฒ์ฌ ํ ํผ๋ก๋๊ฐ ์ต์ํ์ํผ๋ก๋๋ณด๋ค ์๊ฑฐ๋, ์๋ชจ๋ ํผ๋ก๋๋ณด๋ค ์์ ๊ฒฝ์ฐ continue๋ก ๋ณด์ง์์๋ค.
3. ๋ค์ ์์๋ก ๋์ด๊ฐ๋ค.
์์ด์ ๋นํธ๋ง์คํน์ผ๋ก ํ์๋ค.
๋นํธ๋ง์คํน์ ์ฐ๋ฉด ์ฌ์ฉ์ฌ๋ถ๋ฅผ flag๋ก๋ง ์ฒดํฌํ๊ณ isVisited๋ isSelected์ ๊ฐ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ ์์ฝ๊ฒ ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ํ ์ ์์ด์ ํธํ ๊ฒ ๊ฐ๋ค.
3. ์ฝ๋
class Solution {
static int max, length, dungeon[][];
public int solution(int k, int[][] dungeons) {
dungeon = dungeons;
length = dungeons.length;
perm(0, 0, 0, k);
return max;
}
static void perm(int idx, int cnt, int flag, int hp) {
max = Math.max(max, cnt);
if (idx == length) {
return;
}
for (int i=0; i<length; i++) {
if ((flag & (1<<i)) != 0) continue;
if (hp < dungeon[i][0] || hp < dungeon[i][1]) continue;
perm(idx+1, cnt+1, flag|(1<<i), hp-dungeon[i][1]);
}
}
}
4. ์ฌ๋ด
๋นํธ๋ง์คํน์ ์ ์ด์ ์ผ ์์์๊น ๊ฝค๋ ํธํ๋ฏ
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ชจ์์ฌ์ - Java (0) | 2023.10.03 |
---|---|
[Programmers] ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ - Java (0) | 2023.09.20 |
[Programmers] ์์์ฐพ๊ธฐ (level 2) - Java (1) | 2023.09.18 |
[Programmers] ์์์ฐพ๊ธฐ(Level 1) - Java (0) | 2023.09.16 |
[Programmers] ๋ชจ์๊ณ ์ฌ - Java (0) | 2023.09.16 |