알고리즘 공부하며 배운내용
백준 2798번 - 변형 블랙잭
N장의 카드를 바닥에 높고, M을 외친다.
플레이어는 N장의 카드에서 3장을 선택해 M을 넘지 않고 제일 가깝게 만들어야한다.
들어오는 값
첫째 줄에 카드 개수 N, 지정값 M
둘째 줄에 바닥에 깔린 카드
예)
5 21
5 6 7 8 9
구하고 싶은 값
M을 넘지 않으면서 M에 최대한 제일 가까운 카드 3장의 합
예)
21
생각
모든 경우의 수를 따져봐야 할 듯
코드
세 번의 for문으로 전체 따져봤다
const fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
let fl = input.shift().split(' ')
let total = +fl[0]
let target = +fl[1]
let maybe = 0
let answer = 0
let cards = input[0].split(' ').map(Number)
for(let i = 0; i < total; i++) {
for(let j = i + 1; j < total; j++) {
for(let k = j + 1; k < total; k++) {
if(cards[i] + cards[j] + cards[k] <= target) {
maybe = cards[i] + cards[j] + cards[k]
answer = Math.max(maybe, answer)
}
}
}
}
console.log(answer);
'Computer Science > Algorithm :: 알고리즘' 카테고리의 다른 글
알고리즘 :: 백준 2750번 - 수 정렬하기 #JavaScript (0) | 2021.10.01 |
---|---|
알고리즘 :: 백준 2751번 - 수 정렬하기 #JavaScript (0) | 2021.10.01 |
알고리즘 :: 찍먹 vs 부먹, 업그레이드 필요, 최소최대 실패 (0) | 2021.09.28 |
알고리즘 :: 상대평가, 정렬 조건, 핵심을 보자 (0) | 2021.09.26 |
알고리즘 :: 줄 세우기, 병합정렬 응용 (0) | 2021.09.26 |