
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int>arr(n,0);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr.begin(), arr.end());
int max;
int x, y, z;
for (int m = n - 1; m >= 0; m--) {
max = arr[m];
for (int j = m; j >= 0; j--) {
y = arr[j];
for (int i = j; i >= 0; i--) {
x = arr[i];
z = max - x - y;
if (z < 0) continue;
bool answer = binary_search(arr.begin(), arr.end(), z);
if (answer) {
cout << max;
return 0;
}
}
}
}
return 0;
}
숫자를 n 개 입력받아 arr벡터에 저장하고 이를 정렬해주었다.
삼중 for문을 이용하여 풀이했다.
오름차순으로 정렬한 arr백터 배열을 뒤에서 n-1번 원소부터 탐색한다.
첫 for문에서는 최대값을 선정해주었다.
두번째, 세번째 for문을 통해서는 두 숫자를 선택한다. 최댓값에서 선택한 두 숫자를 뺀 값을 내장함수 binary_search를 통해 찾는다. 값이 존재한다면 현재 최대값으로 설정된 값을 출력하고 종료하고 아니라면 다음 반복으로 넘어가 max값이 점점 작아지도록 찾아본다.
'백준 문풀' 카테고리의 다른 글
백준 2656 전깃줄 (0) | 2024.11.05 |
---|---|
백준 1920 수 찾기 (0) | 2024.09.30 |
백준 2110 공유기 설치 (1) | 2024.09.30 |
Bfs Dfs (0) | 2024.09.23 |
백준 1654 랜선 자르기 (0) | 2024.09.08 |