알고리즘

[leetcode] 941. Valid Mountain Array

개발정리 2021. 11. 12. 18:43

Description


정수 배열이 주어졌을때 , 산(mountain) 의 형태로 된 정렬이라면 true 를 반환하는 문제 

(오름차순 -> 내림차순) 

 

 

Input: arr = [2, 1]

Output: false

 

Input: arr = [3, 5, 5]

Output: false

 

Input: arr = [0, 3, 2, 1]

Output: true

 

 

 

Success


배열의 원소는 최소 2개 이상이여야 하고 최초 시작은 무조건 오름차순으로 가야하기 때문에 [0] 번째 원소가 [1] 번째 원소보다 크면 안된다.

 

첫번째 while 문을 통해 이전 인덱스가 현재 인덱스 보다 클 때까지 계속 반복한다. 만약, 이전 인덱스가 현재 인덱스보다 크다면 종료 후 다음 while 문으로 이동하여 현재 인덱스부터 계속 값이 작은지를 확인한 후 해당 조건이 맞다면 true 를 반환시킨다. 

class Solution {
    public static boolean validMountainArray(int[] arr) {
        if (arr == null || arr.length < 3 || arr[0] > arr[1]) return false;
        
        int i = 1;
        while (i < arr.length) {
            if (arr[i-1] > arr[i]) {
                break;
            }
            if (arr[i-1] == arr[i] || i == arr.length-1) {
                return false;
            }
            i++;
        }

        while (i < arr.length) {
            if (arr[i-1] <= arr[i]) {
                return false;
            }
            
            if (i == arr.length-1) {
                return true;
            }
            i++;
        }

        return false;
    }
}

 

 

 

출처


 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com