Algorithm/1일 1코테

[😭 leetcode] 976. Largest Perimeter Triangle

대인보우 2022. 10. 12. 11:57
반응형

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

 

Largest Perimeter Triangle - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

삼각형의 세 변의 길이 합 중 가장 큰 값을 찾는 문제

easy라며... easy라며...!!!!

 

나의 시도... 

import itertools
class Solution:
    def largestPerimeter(self, nums: List[int]) -> int:
        
        nCr = itertools.combinations(nums, 3)
        max_perimeter = 0
        for n in nCr:
            n = list(n)
            n.sort(reverse=True)
            if n[0] < n[1]+n[2]:
                max_perimeter = sum(n[0:3])
        
        return max_perimeter

생각의 플로우는 이랬다...

삼각형이 되기 위한 조건은 => 가장 큰 변의 길이가 나머지 두 변의 길이의 합보다 작아야함!

그러면

1) 리스트에서 3개씩 조합을 뽑는다.

2) 가장 큰 변이 맨 앞으로 오도록 정렬한다.

3) 3개의 조합이 삼각형이 되는 조건을 충족하면 max_perimeter(현재까지 가장 큰 세 변의 합)를 비교하여 값을 바꿔준다.

4) max_perimeter를 return 한다^^

 

예외케이스 나와서 탈락!

 

def largestPerimeter(self, nums: List[int]) -> int:
        
        nums.sort(reverse=True)
        
        for i in range(2, len(nums)):
            if nums[i-2] < nums[i-1] + nums[i]:
                return sum(nums[i-2:i+1])
        
        return 0

초 심플함.. 그냥 큰 순으로 정렬하고 앞에서부터 쭉쭉 찾아서 삼각형인 경우를 리턴하면 됨 ^^ 

 

단순하게 생각하고 공부하자 공부~~~

반응형