본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 17203/javascript] ∑|ΔEasyMAX|

by tokkiC 2022. 9. 14.

∑|ΔEasyMAX| 문제 이름이 이렇게 요상한건 처음본다. 시간내에 여러 구간 합을 구하는 문제

여러개의 구간 합을 구할때는 각 구간의 합을 배열로 저장하여 해당 구간을 배열에서 불러와 더하면

시간내에 계산을 마칠 수 있다

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

 

17203번: ∑|ΔEasyMAX|

입력의 첫 번째 줄에는 GUN이 쓴 노래의 길이 N(1 ≤ N ≤ 1,000) 초와 초당 박자 변화량의 합을 구해야 하는 구간의 수 Q(1 ≤ Q ≤ 1,000)이 공백으로 구분되어 주어진다. 입력의 두 번째 줄에는 순서

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  inp.shift();
  let base = inp
    .shift()
    .split(" ")
    .map((el) => Number(el));
  let arr = [];
  for (let i = 1; i < base.length; i++) {
    arr.push(Math.abs(base[i] - base[i - 1]));
  }
  let ans = [];
  for (el of inp) {
    let [tn, tm] = el.split(" ").map((el) => Number(el));
    let n = tn - 1;
    let m = tm - 1;
    let sum = 0;
    for (let i = n; i < m; i++) {
      sum += arr[i];
    }
    ans.push(sum);
  }
  console.log(ans.join("\n"));
};

댓글