๋งจ์ฒ์์๋ DFS๋ก ์ ๊ทผํ๋๋ฐ ๋ญ๊ฐ ์๋ชป ์งฐ๋์ง
์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค
๊ทธ๋์ ๊ทธ๋ฆฌ๋๋ก ์ ๊ทผํ๋ค
๐ก์ ๊ทผ๋ฐฉ์
- ๊ด๋ฌผ์ ์์๋๋ก ์บ์ผ ํ์ง๋ง ๊ณก๊ดญ์ด ์์๋ ์๊ด์ด ์์ผ๋ฏ๋ก ๊ด๋ฌผ์ 5๊ฐ์ฉ ๋ฌถ์์ผ๋ก ์๋ผ์ ๋๊ณก๊ดญ์ด ํผ๋ก๋ ์์ผ๋ก ์ ๋ ฌํด์ค๋ค
- ๊ณก๊ดญ์ด๋ก ์บ ์ ์๋ ๋งํผ ๊ด๋ฌผ ๋ฌถ์์ ์๋ผ์ค๋ค
- ๊ฐ์ง๊ณ ์๋ ๊ณก๊ดญ์ด๋ก ๊ด๋ฌผ์ ๋ค ์บ์ง ๋ชปํ ์ ์๊ธฐ ๋๋ฌธ์ ์บ ์ ์๋ ๊ด๋ฌผ์ ์ ๊ฑฐ
- ํผ๋ก๋ ์์ผ๋ก ์ ๋ ฌ๋ ๊ด๋ฌผ ๋ฌถ์์ ๋ค์ด์ > ์ฒ > ๋ ๊ณก๊ดญ์ด ์์ผ๋ก ์บ๊ธฐ
function solution(picks, minerals) {
//๊ณก๊ดญ์ด ์
let pickCnt = picks.reduce((acc,cur)=>acc+cur, 0);
//์ต์ข
ํผ๋ก๋
let result=0;
const pick = ['diamond', 'iron', 'stone'];
const table = {
diamond: { diamond: 1, iron: 1, stone: 1 },
iron: { diamond: 5, iron: 1, stone: 1 },
stone: { diamond: 25, iron: 5, stone: 1 },
};
let sorted_minerals=[];
// 5๋ฌถ์์ผ๋ก ๋๋ ์ ๊ฐ ๊ณก๊ดญ์ด๋ณ ํผ๋ก๋ ์ถ๊ฐํด์ค
for(let i=0;i<minerals.length;i+=5){
const tmp_minerals=minerals.slice(i, i+5);
let tmp_fatigue ={diamond:0, iron:0, stone:0};
for(let i=0;i<5&&tmp_minerals.length>i;i++){
tmp_fatigue['diamond']+=table['diamond'][tmp_minerals[i]];
tmp_fatigue['iron']+=table['iron'][tmp_minerals[i]];
tmp_fatigue['stone']+=table['stone'][tmp_minerals[i]];
}
sorted_minerals.push({minerals:tmp_minerals, fatigue:tmp_fatigue}) ;
}
//๋๊ณก๊ดญ์ด ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ, ๊ณก๊ดญ์ด ๊ฐ์๋งํผ ์๋ผ์ค
sorted_minerals = sorted_minerals.slice(0,pickCnt).sort((a,b)=>a['fatigue']['stone']-b['fatigue']['stone']);
//๊ณก๊ดญ์ด๋ฅผ ๋ค ์ฐ๊ฑฐ๋ ๊ด๋ฌผ์ ๋ค ์บ ๋๊น์ง ๋ฐ๋ณต
for(let i=0;i<3;i++){
while(picks[i]){
const item = sorted_minerals.pop();
if(!item) break;
result+=item['fatigue'][pick[i]];
picks[i]--;
}
}
return result;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 4179 ๋ถ! js ํ์ด (1) | 2023.12.27 |
---|---|
๋ฐฑ์ค JS ์ ๋ ฅ๊ฐ ํ ํ๋ฆฟ(VSCode ์ค๋ํซ์ผ๋ก ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ) (0) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์์ฐพ๊ธฐ JS (0) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก JS (1) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ JS (1) | 2023.12.27 |