목차
코드
#include <iostream>
using namespace std;
int main() {
int card[100];
int n, m;
int max;
cin >> n >> m;
for(int i=0; i<n; i++){
cin >> card[i];
}
max = 0;
for(int j = 0; j < (n-2); j++){
for(int k = (j+1); k < (n - 1); k++){
for(int l = (k+1); l < n; l++){
if((card[j] + card[k] + card[l] <= m) && (card[j] + card[k] + card[l] > max))
max = card[j] + card[k] + card[l];
}
}
}
cout << max;
}
사견
크게 어렵지 않은 문제이다.
일종의 조합...? 인가 조합이라면 조합인거 같다.
N개의 카드 중 3개를 선택하는 모든 경우의 수에서 m에 가장 근접한 값을 찾는 것이니까.
선택하는 카드의 수가 주어졌기 때문에 쉬운 문제였다.
반복문 3개를 돌리면서 모든 경우의 수를 찾아주면 되는 것이기 때문에,
다만 선택하는 카드의 수가 주어지지 않았다면 조금 더 생각할 부분이 있는 문제이다.
'공부 > 백준' 카테고리의 다른 글
7568번: 덩치(백준 C++) (0) | 2020.10.24 |
---|---|
2231번: 분해합(백준 C++) (0) | 2020.10.23 |
11729번: 하노이 탑 이동 순서(백준 C++) (0) | 2020.10.21 |
2447번: 별 찍기 - 10(백준 C++) (0) | 2020.10.20 |
10870번: 피보나치 수 5(백준 C++) (0) | 2020.10.19 |