단계별로 풀어보기 > 브루트포스 > [1단계] 2798번
문제 링크 : https://www.acmicpc.net/problem/2798
문제 요약
1. 3장을 고른다.
2. 3장의 합을 구한다.
3. 주어진 M을 넘지 않는 최대값을 구한다.
입력 복사
예제 입력 1 >> 출력 : 21
5 21
5 6 7 8 9
예제 입력 2 >> 출력 : 497
10 500
93 181 245 214 315 36 185 138 216 295
CODE
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> v;
int num[n];
int sum;
for(int i = 0; i < n; i++)
cin >> num[i];
for(int i = 0; i < n; i++) {
for(int j = i+1; j < n; j++) {
for(int k = j+1; k < n; k++) {
sum = num[i]+num[j]+num[k];
if(sum <= m) {
v.push_back(sum);
}
}
}
}
sort(v.begin(), v.end());
cout << v.back() << endl;
}
문제 풀이
1. 삼중 for문을 활용하여 3장의 카드를 고른다.
2. 합(sum)이 M보다 작다면 벡터에 집어 넣는다.
3. 벡터를 오름차순 한 뒤, 가장 뒤의 수(최댓값)를 출력한다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/백준] 2231번 - 분해합 (0) | 2021.06.23 |
---|---|
[C++] 데이터 구조(3) - Map structures (0) | 2021.06.21 |
[C++] 데이터 구조(2) - Set structures (0) | 2021.06.19 |
[C++] 데이터 구조(1) - Dynamic arrays(vector, string) (0) | 2021.06.12 |
[C++] 정렬 (0) | 2021.06.06 |