[C++] 백준 1448 삼각형 만들기

semin·2023년 10월 13일

https://www.acmicpc.net/problem/1448
제목 : 삼각형 만들기
solved.ac 난이도 : Silver III

풀이

삼각형의 성립 조건을 가지고 푸는 문제다. 삼각형의 성립조건 세 변 중에 가장 긴 변이 나머지 두 변의 길이의 합보다 작아야 한다.
가장 긴 삼각형의 둘레를 구하는 문제이므로 내림차순으로 모든 변을 정렬하면 앞에서부터 연속되는 3개의 변이 가장 길다.
그래서 저는 i, i+1, i+2 세개의 변을 기준으로 모든 배열을 탐색한 후에 가장 긴 변 하나를 출력하는 식으로 했다.

코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int N, num, maxround = -1;
    vector<int> len;
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> num;
        len.push_back(num);
    }
    sort(len.rbegin(), len.rend());

    for (int i = 0; i < len.size() - 2; i++) {
        if (len[i] < len[i + 1] + len[i + 2]) {
            int round = len[i] + len[i + 1] + len[i + 2];
            maxround = max(maxround, round);
        }
    }
    cout << maxround;
}

profile
게임 프로그래밍 공부

0개의 댓글