<Medium> Longest Mountain in Array (LeetCode : C#)

이도희·2023년 6월 26일
0

알고리즘 문제 풀이

목록 보기
108/185

https://leetcode.com/problems/longest-mountain-in-array/

📕 문제 설명

정수 배열이 주어질 때 mountain 배열 조건 만족하는 가장 긴 하위 배열의 길이 반환

mountain이 되기 위한 조건
1. arr 길이가 3 이상
2. 다음을 만족하는 i 존재
arr[0] < arr[1] < .. < arr[i-1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]

  • Input
    정수 배열
  • Output
    가장 긴 mountain 배열 길이

예제

풀이

현재 값을 중간으로 둔 상태에서 투포인터로 왼쪽과 오른쪽 산 만드는 규칙 만족하면 index 옮기는 식으로 해서 최대 길이 갱신

public class Solution {
    public int LongestMountain(int[] arr) {
        int maxLength = 0;
        for(int i = 1; i < arr.Length - 1; i++)
        {
            if(arr[i] > arr[i-1] && arr[i] > arr[i+1])
            {
                int startMountain = i;
                int endMountain = i;
                // 왼쪽 오른쪽 규칙 만족할때까지 움직이기 
                while(startMountain > 0 && arr[startMountain] > arr[startMountain-1]) startMountain--;
                while(endMountain < arr.Length-1 && arr[endMountain] > arr[endMountain+1]) endMountain++;
                if (endMountain - startMountain + 1 >= 3)
                {
                    maxLength = Math.Max(maxLength, (endMountain - startMountain + 1)); // mountain 최대 길이 갱신 
                }
                
            }
        }
        return maxLength;
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글