티스토리 뷰

https://www.acmicpc.net/problem/16198

 

16198번: 에너지 모으기

N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있

www.acmicpc.net

const input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n')
const N = +input[0]
const nums = input[1].split(' ').map(Number);
let max = 0;


function solve(energy,acc,leftover){
  if(leftover==2){
    if(acc>max) max = acc;
    return;
  }else{
    for(let i = 1; i<N-1; i++){
      if(energy&(1<<i)){
        solve(energy^(1<<i),acc+calcEnergy(energy,i),leftover-1)
      }
    }
  }
}

function calcEnergy(energy,index){
  let prev;
  let next;

  for(let i = index-1; i>=0; i--){
    if(energy&(1<<i)){
      prev = nums[i];
      break;
    }
  }

  for(let i = index+1; i<N; i++){
    if(energy&(1<<i)){
      next = nums[i];
      break;
    }
  }

  return prev*next
}

solve((1<<N)-1,0,N);
console.log(max)
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함