Algorithm/BOJ
[알고리즘/백준/2798] 블랙잭
개발자 김비숑
2023. 5. 31. 23:22
반응형
문제
https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
풀이
#1
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let [nums, arr] = fs.readFileSync(filePath).toString().trim().split("\n");
const [N, M] = nums.split(" ").map(Number);
const cards = arr.split(" ").map(Number);
let minVal = Number.MAX_SAFE_INTEGER;
let diff = Number.MAX_SAFE_INTEGER;
let answer = 0;
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (i === j) continue;
for (let k = 0; k < N; k++) {
if (k === j || k === i) continue;
const sum = cards[i] + cards[j] + cards[k];
diff = M - sum;
if (diff < 0) continue;
if (diff < minVal) {
minVal = diff;
answer = sum;
}
}
}
}
console.log(answer);
#2
const [N, M] = nums.split(" ").map(Number);
const cards = arr.split(" ").map(Number);
let answer = Number.MIN_SAFE_INTEGER;
for (let i = 0; i < N; i++) {
for (let j = i + 1; j < N; j++) {
for (let k = j + 1; k < N; k++) {
const sum = cards[i] + cards[j] + cards[k];
if (sum > M) continue;
answer = Math.max(answer, sum);
}
}
}
console.log(answer);
반응형