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 탐색을 하여 모든 경우의 수를 조회한 코드예요.