[백준/1806] 부분합 - JavaScript

이상돈·2023년 12월 7일
0
post-thumbnail

문제분류 : 백트래킹

난이도 : 골드 5

출처 : 백준 - 부분합

문제

제한사항

📌 내가 생각한 풀이

l,r 투포인터를 사용하여, 순차대로 합을 구하자.
let inputs = require("fs")
  .readFileSync("boj_1865_부분합.txt")
  .toString()
  .trim()
  .split("\n");

function solution(input) {
  let [n, s] = input[0].split(" ").map(d => +d);
  let arr = input[1].split(" ").map(d => +d);
  let ans = Infinity;
  let l = (r = sum = 0);
  while (l <= r) {
    if (sum >= s) {
      ans = Math.min(ans, r - l);
      sum -= arr[l];
      l++;
    } else if (r === n) {
      break;
    } else {
      sum += arr[r];
      r++;
    }
  }
  if (ans != Infinity) console.log(ans);
  else {
    console.log(0);
  }
}

solution(inputs);

📌 느낀점

기본적인 투포인터 문제이다. 합이 존재하지 않을때 0을 리턴하는 것을 체크하자!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글