섭스토리
백준 2798번 <블랙잭> 본문
백준 2798번 <블랙잭>
브론즈 2
https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
let [NM, input] = prompt().replace(/\r/gi, "").split("\n");
const N = NM.split(" ")[0] / 1;
const M = NM.split(" ")[1] / 1;
let card = input.split(" ").map((v) => v / 1);
let solve = [];
for (let i = 0; i < N ; i++) {
for (let j = i + 1; j < N ; j++) {
for (let k = j + 1; k < N ; k++) {
if (card[i] + card[j] + card[k] <= M) {
solve.push(card[i] + card[j] + card[k]);
}
}
}
}
solve.sort((a, b) => {
return b - a;
});
console.log(solve[0]);
제가 짠 코드입니다.
길이가 N인 배열 요소 중 무작위 3개를 더한 값 중 M과 같거나 넘지 않는 제일 큰 수를 구하는 문제였습니다.
삼중 반복문을 사용하였습니다.
for (let i = 0; i < N ; i++) {
for (let j = i + 1; j < N ; j++) {
for (let k = j + 1; k < N ; k++) {
if (card[i] + card[j] + card[k] <= M) {
solve.push(card[i] + card[j] + card[k]);
}
}
}
}
좀 무식한 방법이지만
문제 알고리즘의 분류가 브루트포스 알고리즘으로 되어 있어서 어쩔 수 없이 모든 요소에 대한 반복을 진행했습니다.
세 요소의 합이 M을 넘어가지 않으면 solve[]에 넣어줍니다.
그리고 내림차순 정렬을 해서 0번째 인덱스값을 출력!
무슨 생각으로 i, j, k 의 범위가 N-1 보다 작다고 설정해놓아서 계속 틀렸었네요..ㅎㅎ
'백준 풀이 🍪' 카테고리의 다른 글
백준 11866번 <요세푸스 문제 0> (0) | 2022.08.25 |
---|---|
백준 4949번 <균형잡힌 세상> (0) | 2022.08.19 |
백준 1920번 <수 찾기> (0) | 2022.08.16 |
백준 1259번 <팰린드롬수> (0) | 2022.08.16 |
백준 1436번 <영화감독 숌> (0) | 2022.08.15 |