728x90
๐๋ฌธ์ ๋งํฌ
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ป์ฝ๋
class Solution {
static int answer = Integer.MAX_VALUE;
public int solution(int[] picks, String[] minerals) {
int[][] cost = {{1, 1, 1}, {5, 1, 1}, {25, 5, 1}};
int n = 0;
for(int i = 0; i < 3; i++){
n += picks[i];
}
digging(new int[n], 0, picks, minerals, cost);
return answer;
}
private void digging(int[] arr, int depth, int[] picks, String[] minerals, int[][] cost){
if(depth == arr.length){
int tired = 0;
int index = 0;
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < 5; j++){
if(index == minerals.length) break;
int k = 0;
if(minerals[index].equals("diamond")) k = 0;
if(minerals[index].equals("iron")) k = 1;
if(minerals[index].equals("stone")) k = 2;
index++;
tired += cost[arr[i]][k];
}
}
answer = Math.min(answer, tired);
return;
}
for(int i = 0; i < 3; i++){
if(picks[i] > 0){
picks[i]--;
arr[depth] = i;
digging(arr, depth + 1, picks, minerals, cost);
picks[i]++;
}
}
}
}
โณํ๊ณ
- dfs๋ฅผ ์ฌ์ฉํด์ ํ์ด๋ฅผ ํ๋ค.
- ์ธ ๋๊ตฌ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํด๋๊ณ ํ๋ฒ์ ํผ๋ก๋๋ฅผ ๊ณ์ฐํ๋ค.
728x90
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Programmers] ์์ ์์ถ - 250136 (L2/Java) (0) | 2025.05.07 |
---|---|
[Algorithm/Programmers] ๋ฌด์ธ๋ ์ฌํ - 154540 (L2/JAVA) (0) | 2023.08.03 |
[Algorithm/Programmers] ํธ๋ ํ์ดํธ ๋ํ - 134240 (L1/JAVA) (0) | 2023.06.24 |
[Algorithm/Programmers] ์ฝ๋ผ ๋ฌธ์ - 132267 (L1/JAVA) (0) | 2023.06.18 |
[Algorithm/Programmers] ๊ณผ์ผ ์ฅ์ - 135808 (L1/JAVA) (1) | 2023.06.17 |