https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
처음 문제를 보고나서 배열 탐색을 위한 알고리즘을 생각 하였다.
우선 간단하게 배열의 요소를 하나씩 순회하기 위한 반복문을 작성하였다.
이때 3개의 요소를 뽑아서 합을 구해야하기 떄문에 순회는 3개의 변수를 이용해야 한다.
블랙잭의 결과가 M에 가깝게 나와야하기 때문에 최소 값을 담을 수 있는 변수를 생성하였다.
M과 현재 합의 차가 최소 값 보다 작으면 블랙잭의 결과를 갱신하였다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> arr;
int N,M;
cin>>N>>M;
arr.assign(N,0);
for(int i = 0;i<N;i++){
int input;
cin>>input;
arr[i] = input;
}
int result;
int min = 9999999;
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 = arr[i] + arr[j] + arr[k];
if(M - sum < min && M - sum >= 0){
min = M - sum;
result = sum;
}
}
}
}
cout<<result<<'\n';
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 5] 10814번 나이순 정렬 (0) | 2023.10.12 |
---|---|
[Silver 4] 9012번 괄호 (0) | 2023.10.12 |
[Silver 4] 2164번 카드2 (0) | 2023.10.11 |
[Silver 3] 2108번 통계학 (0) | 2023.10.11 |
[Silver 5] 2751번 수 정렬하기 2 (0) | 2023.10.10 |