class Solution {
public boolean validMountainArray(int[] arr) {
//max element의 i를 구하고
//그 위치까지 모든 element가 증가하는지 확인
// max 이후 부터의 i에서는 element가 감소하는지 확인
int max = arr[0];
int maxIdx = 0;
boolean ascending = false;
boolean descending = false;
for(int i = 0; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
maxIdx = i;
}
}
for(int i = 0; i < maxIdx; i++){
if(arr[i] < arr[i+1]){
ascending = true;
}else{
ascending = false;
break;
}
}
for(int i = maxIdx ; i < arr.length-1; i++){
if(arr[i] > arr[i+1]){
descending = true;
}else{
descending = false;
break;
}
}
return ascending && descending;
}
}
Given an array of integers arr, return true if and only if it is a valid mountain array.
Recall that arr is a mountain array if and only if:
inetger배열 arr가 주어진다. 오직 산의 형태(정상까지 계속 증가, 정상 이후로 계속 감소)인 배열일 때만 true를 return하라.
첫 for문으로 max와 maxIndex를 구하고 두번째 for문으로 maxIndex까지 증가하는지 확인, 세번째 for문으로 maxIndex부터 감소하는지 확인
ascending, descending for문이 진행되는중에 한번이라도 조건에 해당하지 않는 i가 있다면 break로 빠져나온다. (*maxIndex까지 지속적으로 증가, maxIndex부터 지속적으로 감소하는 배열을 찾는것이 조건이기 때문에 하나의 element라도 규칙에 어긋나면 안됨)
for 문이 세개나 들어가서 복잡하다. 수정해야할듯