문제
문제 해석
- 주어진 카드중 3장을 뽑아서 더했을 때 문제에서 주어진 M 을 넘지 않으면서 가장 큰 수를 찾으면 되는 문제이다.
알고리즘
- 생각 보다 시간이 넉넉 하기 때문에 모든 경우의 수를 다 돌려 가며 가장 큰 수를 찾으면 된다.
- 카드 3장을 찾아야 하기 때문에 3중 for 를 돌면서 3장을 골라주고 이를 더해 M 을 넘지 않는 수를 찾아 주면 되는 간단한 문제이다.
코드
#include <iostream>
#include <vector>
using namespace std;
int N, M;
vector<int> card;
int main(){
cin >> N >> M;
for(int i = 0; i < N; i++){
int tmp = 0;
cin >> tmp;
card.push_back(tmp);
}
int sum = -1;
for(int i = 0; i < N; i++){
for(int j = i+1; j < N; j++){
for(int k = j+1; k < N; k++){
int tmp = card[i] + card[j] + card[k];
if(sum < tmp && tmp <= M){
sum = tmp;
}
}
}
}
cout << sum << '\n';
}
'알고리즘 > 백준' 카테고리의 다른 글
백준_2630 : 색종이 만들기 - C++ (0) | 2023.06.25 |
---|---|
백준_2839 : 설탕 배달 - C++ (0) | 2023.06.25 |
백준_1676 : 팩토리얼 0의 개수 - C++ (2) | 2023.05.27 |
백준_1620 : 나는야 포켓몬 마스터 이다솜 - C++ (2) | 2023.05.27 |
백준_1966 : 프린터 큐 - C++ (0) | 2023.05.27 |