[백준알고리즘] 알고리즘 연습 - 2156

krkorklo·2022년 3월 3일
0

백준알고리즘

목록 보기
16/27

2156 - 포도주 시식

https://www.acmicpc.net/problem/2156

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);
let numbers = [];

for(let i=1; i<input.length; i++) {
    if (input[i] != '') {
        numbers.push(Number(input[i]));
    }
}

function answer(arr) {
    let sum = [0, arr[0], arr[0] + (arr[1] || 0)];
    for(var i=3; i<=arr.length; i++) {
        if (i == 3) sum[i] = Math.max(sum[i-2], sum[i-3] + arr[i-2]) + arr[i-1];
        else sum[i] = Math.max(sum[i-2], sum[i-3] + arr[i-2], sum[i-4] + Math.max(arr[i-3], arr[i-2])) + arr[i-1];
    }
    return Math.max(...sum);
}

console.log(answer(numbers));

두 번을 건너뛰어도 최대값이 되는 답이 있을 수 있다는걸 생각 못하고 처음에 오류가 났다...
그래서 max의 인자를 더 추가했다

0개의 댓글