https://www.acmicpc.net/problem/2798
카드들을 배열내에 넣고 for문을 뽑는 숫자의 수만큼 돌려 그 합을 배열에 담고 가장 큰 숫자를 뽑는 방식으로 진행 하였다.
지금 쓰면서 생각해보니 ... 블랙잭인 숫자가 나온다면 바로 리턴해버리면 좀더 빠르게 해결할 수 있겠다는 생각도 든다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split('\n');
let cardCnt = +input[0].split(' ')[0];
let win = +input[0].split(' ')[1];
let card = input[1].split(' ').map((val) => +val)
let resultArr = [];
for(let i = 0; i < cardCnt; i++){
for(let j = i + 1; j < cardCnt; j++){
for(let k = j + 1; k < cardCnt; k++){
let sum = card[i] + card[j] + card[k];
if(sum <= win){
resultArr.push(sum)
}
}
}
}
console.log(Math.max(...resultArr));
사실 오랜만에 코테 블로그를 올리는 이유는 재귀 문제에서 막혔기 때문이다... 풀이를 봐도 잘 이해가 안가서 ... 나도 모르게 손을 놓아버렸다. 바로 전 게시물에 평이하다고 적었는데... 바로 막혔다!!!!!! 이런 설레발!!
이 문제와는 상관 없지만.. 좀 더 성장해서 다시 돌아가서 풀어야겠다!! 여튼 굳이 다 배열내에 넣지 않고 win과 같은 숫자가 나오면 바로 리턴해버리는 그런 방법으로 다음에는 풀어야겠다!!