728x90
https://www.acmicpc.net/problem/20300
우선, 근손실 정도를 정렬해서
N의 홀수/짝수 경우에 따라서 나눠서 연산해주면 된다.
최솟값을 구해야 하므로 근손실이 가장 큰 기구엔 아무것도 더하지 않는 게 좋다. 혹은 가장 작은 것을 더해야 한다.
홀수의 경우,
2 3 8 10 20
마지막 원소엔 아무것도 더하지 않고, 앞 원소들은 가장 작은 것과 가장 큰 것을 더해야 한다.
그 후, 2쌍씩 더한 값들 중 가장 큰 값을 구하고 마지막 원소와도 비교해서 가장 큰 값을 정한다.
짝수의 경우,
2 3 8 10
홀수의 경우에서, 마지막 원소를 더하는 코드만 빼면 된다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n;
long long t[10001], maxV;
cin >> n;
for(int i=0; i<n; i++) cin >> t[i];
sort(t, t+n);
if(n % 2 == 0){ //짝수
maxV = t[n-1];
for(int i=0; i<n/2; i++){
maxV = max(maxV, t[i] + t[n-i-1]);
}
}else{ //홀수
maxV = t[n-1];
for(int i=0; i<n/2; i++){
maxV = max(maxV, t[i] + t[n-i-2]);
}
}
cout << maxV << '\n';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 1541번: 잃어버린 괄호 (0) | 2022.07.13 |
---|---|
[백준/c++] 1931번: 회의실 배정 (0) | 2022.07.12 |
[백준/c++] 20115번: 에너지 드링크 (0) | 2022.07.12 |
[백준/c++] 1758번: 알바생 강호 (0) | 2022.07.12 |
[백준/c++] 2217번: 로프 (0) | 2022.07.12 |