brute-force 문제이다.
# 백준 2798 블랙잭 python
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
cards = list(map(int, input().split()))
temp = 0
result = 0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
temp = cards[i] + cards[j] + cards[k]
if (temp <= m and temp > result):
result = temp
print(result)
temp 는 for문을 돌며 받은 카드 3장의 합,
result 는 결과 값.
cards 배열을 모두 돌며 3개의 합(temp)을 구하고, 그것이 딜러가 부른 값 m 보다 작거나 같으면 결과에 저장한다.
그 전에 계산한 값(result)와도 비교하여 지금 구한 temp가 이전에 구해둔 result보다 크면 그 때 result에 다시 저장하도록 한다.
// 2798 js
const fs = require('fs');
const input = fs.readFileSync("input.txt").toString().trim().split("\n");
const nm = input[0].split(' ');
let cards = input[1].split(' ');
cards = cards.map(x => parseInt(x));
const n = nm[0];
const m = nm[1];
let temp = 0;
let result = 0;
for(let i=0; i < n; i++){
for(let j=i+1; j < n; j++) {
for(let k=j+1; k < n; k++) {
temp = cards[i] + cards[j] + cards[k];
if (temp <= m && temp > result) {
result = temp
}
}
}
}
console.log(result);
구현이 단순한 문제였어서 파이썬과 크게 다르지 않는다.
다만 앞서 주사위 세개를 자바스크립트로 풀면서 parseInt()
를 모든 배열에 적용해주는 부분을 추가했다.