on my way

[GDSC Week1-4] 백준 1448번:: 삼각형만들기 (C++) 본문

algorithm/C++

[GDSC Week1-4] 백준 1448번:: 삼각형만들기 (C++)

wingbeat 2021. 10. 3. 23:52
반응형

 

 

* 생각한 아이디어 및 문제 풀이

삼각형의 조건은 가장 큰 변의 길이 < 나머지 두 변의 길이합이다.

즉, 모든 값을 벡터로 입력받고, 내림차순으로 정렬한 후 가장 앞의 세 값으로 삼각형이 만족되는지 확인하면 된다.

 

 

* 코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char const *argv[]){
    ios::sync_with_stdio(false); 
    cin.tie(NULL); cout.tie(NULL);
    
    int N, input;
    vector<int> v;
    cin >> N;

    for(int i=0; i<N; i++){
        cin >> input;
        v.push_back(input);
    }
    sort(v.begin(), v.end(), greater<>());
    
    int i=0;
    while(1){
        if (v[i] < v[i+1]+v[i+2]){
            cout << v[i]+v[i+1]+v[i+2] << '\n';
            break;
        }
        i++;
        if (i+2 >= N) {
            cout << -1 <<'\n';
            break;
        }
    }
}

 

 

* 회고

나는 벡터가 편해서 벡터로 자주 문제를 풀이하였는데

메모리 적으로 그닥 좋지는 않은 것 같다.

 

 

* 문제 링크

https://www.acmicpc.net/problem/1448

 

1448번: 삼각형 만들기

첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다

www.acmicpc.net

 

반응형