본문 바로가기
알고리즘/백준

백준 14215번 세 막대 [C++]

by seongjun 2023. 12. 7.

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

 

14215번: 세 막대

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

www.acmicpc.net

 

 

주어진 세 변의 길이를 원하는 만큼 줄여, 삼각형의 조건을 만족시키는 최대 둘레 길이를 구하면 된다.

 

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

using namespace std;

int main(){
    int arr[3];
    for (int i=0;i<3;i++){
        cin >> arr[i];
    }
    sort(arr, arr+3);

    while(arr[2] >= arr[0]+arr[1]) {
        arr[2]--;
    }

    int answer = arr[0] + arr[1] + arr[2];
    cout << answer;
}

삼각형의 조건을 만족하려면, 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 작아야 한다.

그러므로, 정렬을 통해 가장 긴 변을 찾고, 나머지 두 변의 길이의 합 보다 작아질 때 까지 1씩 뺀다.