백준 2798번 블랙잭
브루트포스 알고리즘을 이용해서 푸는 문제이다.
"무차별 대입 공격"이라고 부르기도 하는데 실제로 풀어보니까 그냥 전부 다 대입해서 풀어보는 것이다.
다만 전부 대입해서 푸는 걸 내가 아니라 컴퓨터한테 시킨다는 점이 다르다.
👏 제출한 코드
"use strict";
let input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line.trim());
})
.on("close", () => {
// 입력받은 숫자들을 변수에 각각 보관
let number = input[0].split(" ");
let cards = input[1].split(" ");
const N = Number(number.shift());
const M = Number(number.shift());
cards = cards.map((el) => parseInt(el));
// 전부 계산해서 조건에 맞는 수 중에서 가장 큰 수를 출력한다.
let sum = 0;
for (let n = 0; n < N - 2; n++) {
for (let m = n + 1; m < N - 1; m++) {
for (let o = m + 1; o < N; o++) {
let tempt = cards[n] + cards[m] + cards[o];
if (tempt <= M && sum < tempt) {
sum = tempt;
}
}
}
}
console.log(sum);
});
풀이
먼저 입력받은 숫자를 각자 변수 N, M에 넣고 카드들은 배열 cards에 넣는다.
그리고 반복문을 사용해서 cards배열의 0번째부터 3개씩 더한다.
이 때 반복문의 begin부분과 condition부분을 주의하지 않으면 백준 채점에서 계속 오류가 뜰 수가 있다.
Author And Source
이 문제에 관하여(백준 2798번 블랙잭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinsunkimdev/백준-2798번-블랙잭저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)