백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 24499 , blobyum [슬라이딩 윈도우]
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
원형이라 생각하고 인덱스를 넘어가는 부분은 앞부분으로 인덱스를 다시 맞춰주면 된다.
문제 출처
https://www.acmicpc.net/problem/24499
풀이
이전 슬라이딩 윈도우 문제랑 풀이는 유사하다.
하지만, 이 문제는 원형형태의 배열을 가정한 뒤 인덱스가 배열 길이를 초과할때 앞부분으로 맞게 설정하는 부분이 추가되어야한다.
그러기 위해선 tmp 변수에 오른쪽에 더해줄 초기 인덱스를 할당 해준뒤
이 값이 배열의 길이와 같거나 더 긴지 확인해 준다.
만약 그렇다면 배열의 길이만큼을 빼줘서 다시 앞의 인덱스를 가질 수 있게 만들어 준 뒤에 total에 합해주면 된다.
이 부분을 해결하는 것이 이 문제의 핵심이다.
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.split(" ").map(Number));
const [N, K] = input.shift();
const applePie = input[0];
function solution(N, K, applePie) {
let total = 0;
for (let i = 0; i < K; i++) total += applePie[i];
let MAX = total;
for (let j = 1; j <= applePie.length - 1; j++) {
total -= applePie[j - 1];
let tmp = j + K - 1;
if (j + K - 1 >= applePie.length) tmp = j + K - 1 - applePie.length;
total += applePie[tmp];
MAX = Math.max(MAX, total);
}
return MAX;
}
console.log(solution(N, K, applePie));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 1011 , Fly me to the Alpha Centauri (1) | 2022.10.08 |
---|---|
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2096 , 내려가기 [DP] (1) | 2022.10.07 |
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 12847 , 꿀 아르바이트 [슬라이딩 윈도우] (1) | 2022.10.05 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 21921 , 블로그 [슬라이딩 윈도우] (0) | 2022.10.04 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 12891 , DNA 비밀번호 [슬라이딩 윈도우] (0) | 2022.10.03 |