본문 바로가기
알고리즘 문제/Leetcode

[Leetcode] 976. Largest Perimeter Triangle

by 햄과함께 2021. 12. 21.
320x100

문제 : https://leetcode.com/problems/largest-perimeter-triangle/


정수 배열 nums가 주어질 때, 이 길이 중 3개로 면적이 0보다 큰 삼각형을 만들 때, 이들 삼각형들 중 가장 큰 둘레를 구하라. 

삼각형을 만들 수 없는 경우 0을 반환하라.


면적이 0보다 큰 삼각형을 만드는 경우는, 길이가 (a <= b <= c)일 때, a + b > c 여야 한다.

둘레가 가장 큰 경우를 구해야하므로 가장 큰 정수들을 고를수록 좋다.

그리고 c가 고정되어 있을 때, 가능한 나머지 정수들 중 가장 큰 정수들인 a, b가 a + b > c 조건을 만족할 수 없다면 다른 정수들도 해당 조건을 만족할 수 없다.

따라서, nums 배열을 정렬한 뒤, 가장 큰 정수들부터 a, b, c를 선택한 뒤 a + b > c를 만족하는 경우가 나오면 a + b + c가 정답이 된다.

 

시간복잡도는 O(NlogN).


소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/easy/976.%20Largest%20Perimeter%20Triangle.cpp

 

320x100

댓글