ABC140 C - Maximal Value

備忘録

問題

atcoder.jp

回答

"use strict"

function Main(input) {
  input = input.trim().split('\n');
  const N = Number(input[0].trim());
  const B = input[1].trim().split(' ').map(Number);

  let cnt = N-2;
  let ret = B[0] + B[cnt];
  for(let i=0; i<cnt; i++){
    ret += Math.min(B[i], B[i+1])
  }
  console.log(ret);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

考え方

整数列Aの値は常にB[i]またはB[i+1]の小さいほう(Math.min(B[i], B[i+1]))となる。
そのため、整数列のB回ループを回して、単純に足して算出すればよい。
ただし、整数列Aの一番最初(A1)は必ずB[0]であること、
整数列Aの一番最初(An)は必ずB[N-1]であることを気を付ける。