문제링크: https://www.acmicpc.net/problem/1449
그리디 문제이다.
프로그래머스에 똑같은 문제가 있다.
1. 수리해야하는 위치가 담긴 배열을 오름차순으로 정렬한다.
2. 테이프가 붙여진 위치를 저장한다.
2-1. 수리해야하는 위치가 [1, 2, 3, 4] 이고 테이프의 길이가 3(L) 이라고 하자. 테이프는 1(처음만난 수리지점) 부터 붙여나가야한다.
2-2. 이때 해당 테이프로 1 ,2 ,3 의 위치까지 커버가 가능하기 때문에 tape = 1(처음만난 수리지점) + L - 1 이 된다.
2-3. 다음 수리지점이 tape 보다 크다면 2-2 과정을 다시 수행한다.
const fs = require('fs');
BOJkey = false;
let input = fs
.readFileSync(BOJkey ? './javascript/1449/input.txt' : './dev/stdin')
.toString()
.trim()
.split('\n')
.map(el => el.split(' ').map(Number));
const [N, L] = input.shift();
const target = input.pop();
let [tape, count] = [0, 0];
target.sort((a, b) => a - b);
target.forEach(position => {
if (position > tape) {
tape = position + L - 1;
count++;
}
});
console.log(count);
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[백준/JS] 5052 전화번호 목록 (4) | 2023.03.26 |
---|---|
[백준/JS] 1026 보물 (5) | 2023.03.26 |
[백준/JS] 2661 좋은 수열 (4) | 2023.03.24 |
throw new Error 를 try-catch로 잡아주기 (0) | 2022.07.19 |
자바스크립트 hasOwnProperty 쓰는 이유 (0) | 2022.07.11 |