https://leetcode.com/explore/learn/card/fun-with-arrays/527/searching-for-items-in-an-array/3251/
주어진 Array가 산 모양을 이루는지 체크해서 true or false를 리턴하는 문제
삽질을 많이 해서 기록 😅
처음엔 가장 큰 값의 index를 찾아서 그걸 기준으로 배열을 나눠 오름차순인지 내림차순인지 체크하려고 했으나...코드가너무 복잡해졌다.
결국 다른 풀이를 봤는데..각 변수를 만들어서 앞뒤의 값을 비교하여 처리하면 되는 거였음..🙄🙄;;
풀이방법
/**
* @param {number[]} arr
* @returns {boolean}
*/
const vaildMountainArray = function(arr){
if(arr.length < 3) return false;
let increase = false;
let decrease = false;
for(let i = 1; i < arr.length; i++){
// 같은 값이 연속으로 있다면 산이 될 수 없음.
if(arr[i] === arr[i-1]) return false;
// 앞의 값들이 오름차순인지 체크
if(arr[i] > arr[i-1]){
// 오름차순 후에 내림차순 처리가 되어야함
// -> 내림차순 처리 후에 오름차순 처리를 하게되면 산이 될 수 없음
if(decrease) return false;
increase = true;
}
if(arr[i] < arr[i-1]) decrease = true;
}
// array가 산 모양이라면 값은 둘다 true
return increase && decrease;
}
댓글 영역