https://leetcode.com/problems/valid-mountain-array/

 

Valid Mountain Array - 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

 

만만하다고 바로 서브밋 올렸다가 엣지케이스에 걸려버렸다 헤헤;;

 

문제 조건에 맞게 arr 길이가 3 미만이면 무조건 False를 리턴해준다.

i = 1로 두고 arr[i]와 arr[i-1]을 비교해가며 문제를 풀면된다.

나는 while문을 이용해서 풀었는데 일단 arr[i]이 arr[i-1]보다 크면 i를 계속 증가시켜줬다.

peak가 없으면 i가 len(arr)까지 올라가있을거다. 또 올라가는 구간이 최소 하나는 있어야돼서 i가 1개 이상은 증가되어 있어야 한다.

class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        if len(arr) < 3 : return False
        
        i = 1
        while i < len(arr) and arr[i] > arr[i-1]:
            i += 1
        if i == 1 or i == len(arr):
            return False
        
        while i < len(arr) and arr[i] < arr[i-1]:
            i += 1
        
        return i == len(arr)

결과가 시원찮은거 보니까 뭔가 최적화가 더 가능한 모양이다.

 

고민해보자.

그냥 일시적으로 서버 상황이 안좋았나보다. 고대로 다시 제출하니까 이렇게 뜨네

 

class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        i, j = 1, len(arr)-1
        while i < len(arr) and arr[i] > arr[i-1]: i += 1 
        while j > 0 and arr[j] < arr[j-1]: j -= 1
        return len(arr) >= 3 and 0 < j < i < len(arr)

코드 정리! 훨씬 깔끔하군

+ Recent posts