Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 배열
- 알고리즘
- 프론트엔드
- CSS
- javascript
- 백준 nodeJS
- 버블정렬
- kakao map api
- OSI 7계층
- 페이지네이션
- 자료구조
- input class
- 코드스테이츠
- nodejs
- 코드스테이츠 메인프로젝트
- primitive type
- Native select
- 백준
- 유데미
- 이벤트 루프
- JavaScript Deep Dive
- 코딩테스트
- react js
- sort
- 자바스크립트
- next/Image
- MUI
- 재귀함수
- 정규표현식
- Node js
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
[백준 nodeJS] 브루트포스 2798번 블랙잭 본문
브루트포스란?
암호해독법 중 하나로, 모든 경우의 수를 대입하는 알고리즘
문제
카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다.
한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다.
김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다.
이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.
N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오.
입력
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다.
합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다.
출력
첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.
코드
const [line1, line2] = require("fs")
.readFileSync("example.txt")
.toString()
.trim()
.split("\n");
const m = line1.split(" ").map(Number)[1];
const cards = line2.split(" ").map(Number);
let maxSum = 0;
for (let i = 0; i < cards.length - 2; i++) {
for (let j = i + 1; j < cards.length - 1; j++) {
for (let k = j + 1; k < cards.length; k++) {
const sum = cards[i] + cards[j] + cards[k];
maxSum =
Math.abs(maxSum - m) > Math.abs(sum - m) && sum <= m ? sum : maxSum;
}
}
}
console.log(maxSum);
포인트는 m보다 sum이 크지 않아야한다는 점. 그리고 모든 경우의 수를 고려하기 위하여 3중첩 반복문을 사용했다.
'javascript > 알고리즘' 카테고리의 다른 글
[백준 nodeJS] 10815 숫자 카드(이분탐색) (0) | 2022.10.11 |
---|---|
[백준 nodeJS] 브루트포스 2231 분해합 (0) | 2022.10.10 |
[백준 nodeJS] 18870 좌표 압축 (0) | 2022.10.09 |
[백준 nodeJS] 1181 단어정렬 (0) | 2022.10.09 |
[백준 nodeJS] 1427 소트인사이드 (0) | 2022.10.07 |