완전탐색 & 백트래킹 문제부터 풀어보고 있다.
const fs = require("fs");
const input = fs.readFileSync("./input.txt").toString().trim().split("\n");
const [N, M] = input[0].split(" ").map(Number);
const cards = input[1].split(" ").map(Number);
let max = 0;
const numbers = cards;
const selectedCount = 3;
const combinations = getCombinations(numbers, selectedCount);
for (const combination of combinations) {
const sum = sumOfArray(combination);
if (sum <= M) {
max = Math.max(max, sum);
}
}
console.log(max)
function getCombinations(arr, selectCount) {
const result = [];
function combinationsUtil(tempArr, start, selectedCount) {
if (selectedCount === 3) {
result.push([...tempArr]);
return;
}
for (let i = start; i < arr.length; i++) {
tempArr.push(arr[i]);
combinationsUtil(tempArr, i + 1, selectedCount + 1);
tempArr.pop();
}
}
combinationsUtil([], 0, 0);
return result;
}
function sumOfArray(arr) {
return arr.reduce((acc, cur) => {
return acc + cur;
}, 0);
}
'개발 > 코딩테스트' 카테고리의 다른 글
[백준] 좋은수열 - 2661 (0) | 2023.11.27 |
---|---|
[백준] 스타트와 링크 - 14889 (0) | 2023.11.25 |
[프로그래머스] [3차] n진수 게임 (1) | 2023.11.13 |
[프로그래머스] 택배상자 (0) | 2023.11.11 |
[프로그래머스] 이진 변환 반복하기 (0) | 2023.11.10 |