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

[백준 1449/javascript] 수리공 항승

by tokkiC 2022. 10. 20.

그리디 문제

테이프가 부족하면 카운트를 늘리고

현재 위치를 갱신해가면 되는 문제이다

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

 

1449번: 수리공 항승

첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 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 = (input) => {
  let [n, len] = input[0].split(" ").map((el) => Number(el));
  // console.log(len);
  let arr = input[1].split(" ").map((el) => Number(el));
  let cnt = 0;

  // 오름차순으로 정렬
  arr.sort((a, b) => a - b);
  // 첫 누수를 시작 위치로 설정
  let pos = arr[0];

  for (let i = 1; i < n; i++) {
    // 테이프 길이가 부족하면
    if (len <= arr[i] - pos) {
      // 새 테이프를 사용해야하므로 cnt++
      cnt++;
      // 새 누수 지점을 시작 지점으로 재설정한다
      pos = arr[i];
    }
  }
  // 마지막 테이프 포함
  cnt++;
  console.log(cnt);
};

댓글