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 |
Tags
- 프로그래머스
- 코딩테스트
- BOJ
- 연결리스트
- 정규표현식
- 합병 정렬
- 병합 정렬
- 해시
- 브루트포스
- react
- JavaScript
- hash
- 딥다이브
- 완전탐색
- useState
- 기술면접
- CSS
- state
- Node
- node.js
- 리액트
- 최소공배수
- 자료구조
- 백준
- sort
- 코테
- 정렬
- 자바스크립트
- 알고리즘
- JS
Archives
- Today
- Total
가치투자자
[BOJ] 2798번 : 블랙잭 본문
728x90
반응형
백준 2798번 : 블랙잭
🔗 문제 링크
https://www.acmicpc.net/problem/2798
💬 문제
브루트포스(완전 탐색, Brute Force) 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다.
- N개의 양의 정수 카드가 주어질 때, 이 중 3장을 고른다.
- 이 3장의 합이 M 이하면서 M에 최대한 가까울 때, 이때의 합을 출력해준다.
💡 입력값 받아오기
JavaScript로 풀 경우, 입력값(input)을 어떻게 받아와야 할 지가 중요하다.
이 문제에서는 1번째 줄에 카드 개수 N과 M이 공백을 기준으로 주어진다. 그 다음줄에는 N개의 카드가 공백을 기준으로 주어진다.
N과 M 그리고 그 다음줄에 주어진 카드들을 줄바꿈과 공백을 기준으로 잘라주고, 각각을 정수화해준 다음 N과 M, 카드 배열 cards로 할당해준다.
입력값을 받아오는 것과 관련해 더 자세한 내용은 아래 링크를 참고 바란다.
https://valueengine.tistory.com/2
728x90
🔑 풀이
- 총 3장의 카드를 고를 때, 서로 겹치면 안 된다.
- 따라서 1번째 카드가 i번째일 때, 2번째 카드 j는 i 뒤에 카드여야 하고, k는 j 뒤에 카드여야 한다
- 또한, 총 N개가 있을 때, 1번째 카드는 뒤에 2개 카드는 될 수 없고, 2번째 카드 역시 뒤에 카드 1개는 될 수 없다 - 만약 3장의 합이 M과 같아지면 더이상 for문을 돌 필요가 없으므로, M과 같은 sum을 출력해준다.
- 총합(sum)이 M보다 작은 경우에는 현재 최댓값(max)와 현재 총합을 비교하여 더 큰 max값이 등장했을 때 대체해준다.
// input값 처리
const input = require('fs').readFileSync('/dev/stdin')
.toString().trim().split(/\s/).map((v) => +v); // 정수화
[N, M, ...cards] = input;
console.log(solution(N, M, cards));
// 블랙잭 최대값 메소드
function solution(N, M, cards) {
let max = 0;
for (let i=0; i < N-2; i++) { // 1번째 카드
for (let j=i+1; j < N-1; j++) { // 2번째 카드
for (let k=j+1; k < N; k++) { // 3번째 카드
let sum = cards[i] + cards[j] + cards[k];
if (M === sum) {
return sum;
} else if (max < sum && sum < M) {
max = sum;
}
}
}
}
return max;
}
시간은 다음과 같이 걸렸다.
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 2002번 : 추월 (0) | 2023.05.31 |
---|---|
[BOJ] 1075번 : 나누기 (0) | 2023.04.25 |
[BOJ] 3085번 : 사탕 게임 (0) | 2023.04.22 |
[BOJ] 1874번 : 스택 수열 (0) | 2023.04.19 |
[BOJ] 6131번 : 완전 제곱수 (0) | 2023.04.16 |