https://www.acmicpc.net/problem/14215
조건을 먼저 살펴보자
넓이가 양수인 삼각형을 만들어야 하고, 삼각형의 둘레가 최대가 돼야한다.
일단 삼각형이 되려면 제일 긴 막대가 나머지 두 막대의 합 보다 작아야 하기 때문에
입력을 받은 후 배열에 저장한 다음 정렬해주고 제일 긴 막대의 길이 부터 그 다음으로 작은 막대 길이까지 반복문을 돌면서 이 조건을 먼저 검사해주자.
만약 제일 긴막대가 해당 조건을 만족한다면 break 해주면 그게 둘레의 최대값이 된다.
정답코드
#include "iostream"
#include "algorithm"
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
// 세 변을 정렬하여 가장 긴 변이 마지막에 오도록 정렬
int sides[3] = { a, b, c };
sort(sides, sides + 3);
for (int i = sides[2]; i >= sides[0]; i--)
{
if (i < sides[0] + sides[1])
{
sides[2] = i;
break;
}
}
int sum = sides[0] + sides[1] + sides[2];
cout << sum << endl;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준]2798번. 블랙잭 (0) | 2024.09.12 |
---|---|
[백준][C++]2292번. 벌집 (0) | 2024.09.11 |
[백준][C++]5073번. 삼각형과 세 변 (3) | 2024.09.11 |
[백준][C++]10101번. 삼각형 외우기 (0) | 2024.09.09 |
[백준][C++]9063번. 대지 (0) | 2024.09.09 |