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

+ Recent posts