본문 바로가기

카테고리 없음

[구름, javascript] 숫자 표현

level.goorm.io/exam/43129/%EC%88%AB%EC%9E%90-%ED%91%9C%ED%98%84/quiz/1

const fs = require('fs');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : 
`10`
).split('\n');
 
const input = (() => {
    let line = 0;
    return () => stdin[line++];
})();

var result = [];

function dfs(current){
  if(result.indexOf(current.join(','))>=0) return;
  if(current.length === 1) return;

  current.sort((a, b)=>b-a);
  result.push(current.join(','));
  for(let i=0; i<current.length - 1; i++){
    let tmp = [current[i] + current[i+1]];
    for(let j=0; j<current.length; j++){
      if(j !== i && j !== i+1){
        tmp.push(current[j]);
      }
    }
    tmp.sort((a, b) => b-a);

    dfs(tmp);
  }
}

(function main(){
  var inp = +input();
  var arr = new Array(inp).fill(1);
  
  dfs(arr);
  console.log(result.length+1);
})();

 

DFS

위와 같은 방식으로 DFS 탐색을 하여 모든 경우의 수를 조회한 코드예요.