백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 14465 , 소가 길을 건너간 이유 5
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
처음에 금방 풀었는데 시간초과 발생...결국 슬라이딩 윈도우로 품
문제 출처
https://www.acmicpc.net/problem/14465
풀이
시간 초과 풀이
처음 푼 시간초과난 문제이다.
시간 복잡도가 (NO(N)) 나왔다고 생각했는데 시간 초과 발생
dict 에 키값주고 그냥 nums에 담긴 값들만 확인하는 방법은 시간초과가 나는 것 같다.
배열을 N+1 만큼 선언해주고 0으로 채워준다.
이후 슬라이딩 윈도우를 진행하면서 고장난 신호등이 나오는 곳은 1을 더해주면서 최솟값을 찾아주면 된다.
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.split(" ").map(Number));
const [N, K, B] = input.shift();
const nums = input.map((v) => Number(v));
function solution(N, K, B, nums) {
let answer = Infinity;
const arr = Array.from({ length: N + 1 }).fill(0);
nums.map((v) => (arr[v] = 1));
let result = 0;
for (let i = 0; i < K; i++) result += arr[i] ?? 0;
for (let j = 1; j <= N - K + 1; j++) {
result = result - (arr[j - 1] ?? 0) + (arr[j + K - 1] ?? 0);
answer = Math.min(answer, result);
}
return answer;
}
console.log(solution(N, K, B, nums));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 12891 , DNA 비밀번호 [슬라이딩 윈도우] (0) | 2022.10.03 |
---|---|
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 15565 , 귀여운 라이언 (0) | 2022.10.02 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 2531 , 회전 초밥 (0) | 2022.09.30 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 10025 , 게으른 백곰 (1) | 2022.09.29 |
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2470 , 두 용액 [투포인터] (0) | 2022.09.27 |