Computer Science/Algorithm :: 알고리즘

알고리즘 :: 백준 2798번 - 변형 블랙잭 #JavaScript

HJPlumtree 2021. 9. 30. 16:01

알고리즘 공부하며 배운내용

 

 

백준 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);