눈송이의 개발생활

[BOJ]1448 - 삼각형 만들기 (C++) 본문

Algorithm/BOJ

[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