https://app.codility.com/programmers/lessons/10-prime_and_composite_numbers/peaks/start/
이건 너무 모르겠어서 구글링 힘을 많이 받아따...
const solution = A => {
let len = A.length;
let peaks = [];
for(let i=0; i<len; i++){
if(A[i]>A[i-1] && A[i]> A[i+1]) peaks.push(i);
}
if(peaks.length === 0) return 0;
for(let i=peaks.length; i>=1; i--){
if(len%i===0){
let numMember = len/i;
let index = 0;
for(let peak of peaks){
let start = index*numMember;
let end = (index+1)*numMember;
if(peak>=start && peak<end){
index++;
}
}
if(index===i) return i;
}
}
}
const solution = A => {
let len = A.length;
let peaks =[];
for(let i=0; i<len; i++){
if(A[i]>A[i-1] && A[i]> A[i+1]){
peaks.push(i);
}
}
if(peaks.length===0) return 0;
for(let i=peaks.length; i>=1; i--){
let flags = i;
let position = 0;
while(flags > 0 && position < len){
if(peaks.includes(position)){
flags--;
position += i;
}else{
position++;
}
}
if(flags===0) return i;
}
}
const solution = A => {
let len = A.length;
let nextPeak = new Array(len).fill(-1);
let peaksNum = 0;
for(let i=len-2; i>=0; i--){
if(A[i]>A[i-1] && A[i]> A[i+1]){
nextPeak[i] = i;
peaksNum++;
}else{
nextPeak[i] = nextPeak[i+1];
}
}
if(peaksNum===0) return 0;
for(let i=peaksNum; i>=1; i--){
let flags = i;
let pos = 0;
while(flags>0 && pos<len){
pos = nextPeak[pos];
if(pos === -1) break;
flags--;
pos += i;
}
if(flags===0) return i;
}
}