Given an integer array nums, return the largest perimeter of a triangle with a non-zero area, formed from three of these lengths. If it is impossible to form any triangle of a non-zero area, return 0.
정수 배열의 nums가 주어질 때, 이 길이 중 3변의 면적이 형성될 때, 0이 아닌 가장 큰 삼각형 둘레를 구하여라.
만약 삼각형을 만들 수 없다면 0을 리턴 하라.
Example 1:
Input: nums = [2,1,2]
Output: 5
Example 2:
Input: nums = [1,2,1]
Output: 0
일단 문제는 이해했지만 가장 큰 삼각형의 둘레를 어떤 방식으로 풀어야 될지 감이 잡히지 않았다..
아래 유트브를 통해 가장 큰 삼각형의 둘레를 구하는 원리를 알게되었다.
3변의 길이가 주어질 때 두변의 합이 가장 긴변보다 크면 삼각형이 만들어진다.
즉, a b c = [ 2, 1, 2 ] 이면 a+b > c, b+c > a, a+c > b 를 모두 총족해야 큰 삼각형의 둘레를 구할수 있다.
var largestPerimeter = function(nums) {
nums.sort((a,b) => b-a);
for(let i = nums.length-1; i <= 2; i--) {
}if(nums[i] = nums[i-1]+ nums[i-2]) {
return nums[i]+nums[i-1]+nums[i+2];
}
return 0;
};
저 영상 보고 힌트를 얻어 풀었는데 자꾸 i가 정의되지 않았다고 뜨고 무엇이 잘못된 건지 이유를 알 수 없었다!!!!!!!!!!!!!
var largestPerimeter = function(nums =[]) {
nums.sort((a,b) => b-a);
for(let i = 0; i < nums.length-2; i++) {
// 여기서 다른 사람 문제풀이를 보니 length만 한사람이 있고 -2, -3한 사람도 있음
if(nums[i] < nums[i+1]+ nums[i+2]) {
return nums[i]+ nums[i+1]+ nums[i+2];
}
}
return 0;
};
sort
를 사용하여 내림차순으로 숫자를 바꾸어준다. [1,2,2]왜 나는 이런 생각이 나지 않는 것일까!!!!!
리뉴얼된 UI 릿코드에서는 문제를 풀어도 LeetHub에 문제가 카운팅 되지 않더라고요!
아래 링크를 눌러보시면 해결할 수 있습니다!
문제 푸실 때 내 프로필을 클릭하여 예전 버전의 릿코드로 변환해 주시면 해결됩니다!