백준 2798번 블랙잭

=> 백준 2798번 링크

브루트포스 알고리즘을 이용해서 푸는 문제이다.

"무차별 대입 공격"이라고 부르기도 하는데 실제로 풀어보니까 그냥 전부 다 대입해서 풀어보는 것이다.

다만 전부 대입해서 푸는 걸 내가 아니라 컴퓨터한테 시킨다는 점이 다르다.

👏 제출한 코드

"use strict";
let input = [];
require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    input.push(line.trim());
  })
  .on("close", () => {
    // 입력받은 숫자들을 변수에 각각 보관
    let number = input[0].split(" ");
    let cards = input[1].split(" ");
    const N = Number(number.shift());
    const M = Number(number.shift());
    cards = cards.map((el) => parseInt(el));
    // 전부 계산해서 조건에 맞는 수 중에서 가장 큰 수를 출력한다.
    let sum = 0;
    for (let n = 0; n < N - 2; n++) {
      for (let m = n + 1; m < N - 1; m++) {
        for (let o = m + 1; o < N; o++) {
          let tempt = cards[n] + cards[m] + cards[o];
          if (tempt <= M && sum < tempt) {
            sum = tempt;
          }
        }
      }
    }
    console.log(sum);
  });

풀이

먼저 입력받은 숫자를 각자 변수 N, M에 넣고 카드들은 배열 cards에 넣는다.

그리고 반복문을 사용해서 cards배열의 0번째부터 3개씩 더한다.

이 때 반복문의 begin부분과 condition부분을 주의하지 않으면 백준 채점에서 계속 오류가 뜰 수가 있다.

좋은 웹페이지 즐겨찾기