https://www.acmicpc.net/problem/1448
#include <iostream>
#include <vector>
#include <algorithm>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
int n, tmp, result=0;
vector<int> v;
vector<int> isin;
vector<int>::iterator it;
cin >> n;
for (int i=0;i<n;i++){
cin >> tmp;
v.push_back(tmp);
}
// 내림차순 (큰 수가 왼쪽)
sort(v.begin(), v.end()); reverse(v.begin(), v.end());
for(int i=0;i<n-2;i++){
if (i+2 == n) break;
if (v[i]<v[i+1] + v[i+2]){
result = max(result, v[i]+v[i+1]+v[i+2]);
}
}
if (result == 0) cout<<-1;
else cout<<result;
}
- 큰수는 무조건 왼쪽에 위치하기에 max 추출 굳이 안해도된다.
- 3중첩 for문을 시도했지만 계속 시간초과가 났다
-> 1for문으로 충분히 가능했다는 것을 깨닫고 이를 해결.
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[C++] 백준 1302 베스트셀러 // <map> (0) | 2022.03.16 |
---|---|
[C++] 백준 9012 괄호 (알고스터디 E조) (0) | 2022.03.15 |
[C++] 프로그래머스 더 맵게 (0) | 2022.03.13 |
[C++] 백준 2309 일곱 난쟁이 (0) | 2022.02.27 |
[python] 프로그래머스 실패율 (0) | 2022.02.10 |
[C++] 백준 5054 주차의 신 (0) | 2022.02.03 |