2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
접근 방법
알고리즘 : Brute force
1. 3중 for 문을 통한 완전탐색 (n의 최대값이 100으로 1,000,000번)
Javascript
/**
* 제출용. 아래 로컬용을 지우고 제출하자.
*/
// let input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n")
/**
* 로컬용, 예제.txt를 생성해서 예제를 복붙하자.
*/
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split("\n")
.map((val) => val.trim());
let [n, m] = input
.splice(0, 1)[0]
.split(" ")
.map((v) => +v);
let card = input[0].split(" ").map((v) => +v);
let ans = -9999;
for (let i = 0; i < n - 2; i++) {
for (let j = i + 1; j < n - 1; j++) {
for (let k = j + 1; k < n; k++) {
let sum = card[i] + card[j] + card[k];
if (sum > ans && sum <= m) {
ans = sum;
}
}
}
}
console.log(ans);
}
solution();
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin); //제출 시 삭제
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m;
cin>>n>>m;
int card[n];
for(int i=0;i<n;i++){
cin>>card[i];
}
int ans = -9999;
for (int i = 0; i < n - 2; i++) {
for (int j = i + 1; j < n - 1; j++) {
for (int k = j + 1; k < n; k++) {
int sum = card[i] + card[j] + card[k];
if (sum > ans && sum <= m) {
ans = sum;
}
}
}
}
cout<<ans<<"\n";
}
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 1920 수찾기 (Javascript, c++) (0) | 2022.06.13 |
---|---|
[baekjoon] 날짜 계산 1476 (Javascirpt, c++) (0) | 2022.06.12 |
[baekjoon] 영화감독 숌 1436 (Javascript, c++) (0) | 2022.06.11 |
[baekjoon] 한수 1065 (Javascript, c++) (0) | 2022.06.10 |
[baekjoon] 숫자 정사각형 1015 (Javascript, c++) (0) | 2022.06.09 |