[백준] 2798 블랙잭 - Node.js

송철진·2023년 5월 13일
0

백준-Node.js

목록 보기
63/69

문제

https://www.acmicpc.net/problem/2798

solution

const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim()

const solution = (input) => {
  const [a, b] = input.split('\n')
  const max = a.split(' ')[1]
  const nums = b.split(' ').map(Number)
  let arr = []
  for(let i=0; i<nums.length-2; i++){
      for(let j=i+1; j<nums.length-1; j++){
          for(let k=j+1; k<nums.length; k++){
              const sum = nums[i] + nums[j] + nums[k]
              if(sum <= max) arr.push(sum)
          }
      }
  }
  return arr.sort((a,b)=>a-b)[arr.length-1]
}

console.log(solution(input))

주어진 카드nums에서 3장을 뽑아max값이하의 최대값을 반환하기.
어떻게 풀어야 하나 막막했는데 알고보니 모든 경우의 수를 탐색하는 완전탐색 알고리즘(브루트포스 알고리즘)으로 간단히 풀 수 있었다.

숫자의 오름차순을 계산해야 하므로 sort()가 아닌 sort((a,b)=>a-b)를 사용해야한다는 것을 유념하자

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글