눈송이의 개발생활
[BOJ]1448 - 삼각형 만들기 (C++) 본문
문제
https://www.acmicpc.net/problem/1448
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int N;
int array[1000000];
cin >> N;
for (int i=0; i<N; i++){
cin >> array[i];
}
sort(array, array+N, greater<int>());
int i=0;
int total;
while(i<N-2){
int biggest = array[i];
total =0;
if(array[i+1] + array[i+2] > biggest){
total = biggest+ array[i+1]+ array[i+2];
break;
} else {
i++;
total = -1;
}
}
cout << total;
}
풀이
N개의 빨대 중 3개를 뽑아 삼각형을 만든 뒤 세 변 길이의 합의 최댓값을 구하기 위해서는 일단 입력받은 수들을 정렬해야한다.
내림차순으로 정렬한 뒤 맨 앞의 수가 뒤의 두 수의 합보다 작으면 삼각형이 만들어지고 세 변의 길이의 최댓값을 구할 수 있다.
만약 맨 앞의 수가 뒤의 두 수의 합보다 크다면 index를 하나씩 뒤로 옮겨 다시 앞의 과정을 반복해본다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]10799 - 쇠막대기 (C++) (0) | 2022.01.04 |
---|---|
[BOJ]10828 - 스택 (C++) (0) | 2022.01.04 |
[BOJ]11582 - 치킨 TOP N (C++) (0) | 2022.01.04 |
[BOJ]10610 - 30 (C++) (0) | 2022.01.04 |
[BOJ]11931 - 수 정렬하기4 (C++) (0) | 2022.01.04 |
Comments