⚡문제 유형
배열, 수학, 그리디, 정렬
📝문제
정수 배열이 주어지면 0이 아닌 면적을 가진 삼각형의 가장 큰 둘레를 nums 반환해라.
만들어지지 않으면 0을 반환.
📘예시
Input: nums = [2,1,2]
Output: 5
Input: nums = [1,2,1]
Output: 0
📗풀이
"삼각형의 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 항상 작다" 라는 삼각형의 성질을 이용해 풀면 된다.
1. 내림차순 정렬을 한다.
2. 가장 긴 변 < 나머지 두변 합 이 성립하면 세 변을 더한다.
📕코드
var largestPerimeter = function(nums) {
nums.sort((a,b) => b -a);
for(let i = 0; i < nums.length - 2; i++){
if(nums[i] < nums[i+1] + nums[i+2]) return nums[i] + nums[i+1] + nums[i+2]
}
return 0;
};
'자료구조&알고리즘 > 알고리즘' 카테고리의 다른 글
[LeetCode][JS] 66번 Plus One (0) | 2022.06.13 |
---|---|
[LeetCode][JS] 1678번 Goal Parser Interpretation (1) | 2022.06.02 |
[LeetCode][JS] 1502번 Can Make Arithmetic Progression From Sequence (0) | 2022.05.27 |
[leetCode][JS] 1822번 Sign of the Product of an Array (0) | 2022.05.27 |
[LeetCode][JS] 1779번 Find Nearest Point That Has the Same X or Y Coordinate (0) | 2022.05.27 |