c_NumberSolitaire

source app.codility.com/c/run/trainingK7P6NV...
type 📌 개발노트
topics 600-알고리즘 & 코딩테스트 603 동적프로그래밍
types 문제풀이
정답여부 틀림

문제

N 배열
정수구성 표시가능
자갈을 N-1로 옮겻을때 표시된 정수의 합
주사위 던짐 if 현재 + 주사위 == 배열인덱스, 이동&표시
else 암것도하지않음
보드에서 얻을수 있는 최대를반환

3가지 조건
전꺼랑 현재꺼랑둘다 표시
현재꺼만표시
전꺼만표시

WrongAnswer

function solution(A) {
    let result = A[0] + A[A.length-1]
    if(A.length<=2){
        return result
    }
    let term = 0;
    for(let i = 2 ; i<A.length-1; i++){
        if(A[i]>A[i-1] && A[i]>A[i]+A[i-1]){
            term++;
            if(term<=6){
                A[i] = A[i];
                continue;
            }
        }
        term = 0
        A[i] = Math.max(A[i-1],A[i]+A[i-1])
    }
    return A.length<7? Math.max(result,result+A[A.length-2]):result+A[A.length-2]
}

RightAnswer

특정인덱스의 정답값은 이전 6개의 인덱스의 정답값 + 현재인덱스 값을 더하것임.(마지막은항상방문에해야하기에)

function solution(A) {
    for(let i = 1; i<A.length; i++){
        let sStart = i-6;
        if(sStart<0) sStart=0;
        let  tmpSl= A.slice(sStart,i)
        // tmpSl 1일때 0부분만있기에 
        // 이후에 무조건 0을포함하게되어있음
        A[i] = Math.max(...tmpSl) + A[i]
    }
    return A[A.length-1]
}