반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 976 | Largest Perimeter Triangle | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/largest-perimeter-triangle/
문제
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.
조건
- 3 <= nums.length <= $10^4$
- 1 <= nums[i] <= $10^6$
내 풀이
삼각형이 되는 조건은 각 변의 길이가 a > b > c라 할 때, a < (b+c)를 만족해야 한다.
그렇기 때문에 nums를 내림차순으로 정렬한 뒤 a < (b+c)를 만족함을 확인한다.
이 때, 연속된 수를 확인하는 이유는 만약 nums[i] < (nums[i+1]+nums[i+2])가 성립하지 않는다면 nums[i+2] > nums[i+3]이기 때문에 nums[i] < (nums[i+1]+nums[i+3])도 당연히 성립하지 않기 때문이다.
코드
class Solution:
def largestPerimeter(self, nums: List[int]) -> int:
nums.sort(reverse=True)
for i in range(len(nums)-2):
if nums[i] < (nums[i+1]+nums[i+2]):
return sum(nums[i:i+3])
return 0
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[2095] Delete the Middle Node of a Linked List | Python (0) | 2022.10.14 |
---|---|
[LeetCode] 237 | Delete Node in a Linked List | Python (0) | 2022.10.13 |
[LeetCode] 334 | Increasing Triplet Subsequence | Python (0) | 2022.10.11 |
[LeetCode] 981 | Time Based Key-Value Store | Python (0) | 2022.10.06 |
[LeetCode] 623 | Add One Row to Tree | Python (0) | 2022.10.05 |
Comments