Valid Mountain Array
Given an array of integers arr
, return true
if and only if it is a valid mountain array.
주어진 정수 배열이 산 배열이면 true
를 반환하시오
Recall that arr is a mountain array if and only if:
다음 경우에만 산 배열이라는 것을 기억할 것
arr.length >= 3
i
with 0 < i < arr.length - 1
such that:arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
Input: arr = [2,1]
Output: false
Input: arr = [3,5,5]
Output: false
Input: arr = [0,3,2,1]
Output: true
1 <= arr.length <= 10⁴
0 <= arr[i] <= 10⁴
/**
* @param {number[]} arr
* @return {boolean}
*/
var validMountainArray = function(arr) {
if(arr.length < 3) return false // 길이가 3보다 작으면 산 배열이 아님
const biggest_num = Math.max(...arr)
const biggest_num_idx = arr.indexOf(biggest_num)
// 가장 큰 수가 배열의 첫번째에 있거나 제일 마지막에 있으면 산 배열이 될 수 없음
if(biggest_num_idx === 0 || biggest_num_idx === arr.length - 1) return false
for(let i = 1; i < arr.length; i++) {
if( i <= biggest_num_idx ) {
// 가장 큰 수를 기준으로 분기점 (산 배열이니 오르락 내리락을 판단이 필요)
if(arr[i - 1] >= arr[i]) return false
} else {
if(arr[i - 1] <= arr[i]) return false
}
}
return true
};
runtime 속도는 다른 사람들보다 좀 걸리는 편이지만 메모리 사용이 적은 방법이었다
Feedback은 언제나 환영입니다🤗