백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 15565 , 귀여운 라이언
풀이 시간
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
처음에 전체 배열에서 left, right를 늘려나아가는 식으로 했는데 그럴 필요 없이 라이언이 담긴 위치들만 가지고 슬라이딩 윈도우를 해나아가면되었다. 처음 한방법은 라이언을 만날때까지 계속 늘려나아가야해서 예외상황이 많았는데, 이런식으로하면 적은 조건으로 쉽게 풀 수 있다.
문제 출처
https://www.acmicpc.net/problem/15565
15565번: 귀여운 라이언
꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의
www.acmicpc.net
풀이
우선 라이언이 있는 위치의 인덱스를 모두 lion 에 저장해둔다.
이때, lion 배열의 길이가 K보다 작다면 이는 문제 해결을 할 수 없으므로 바로 return -1을 해버리고 종료시킨다.
최솟값을 찾는 문제이기 때문에 result를 무한대로 잡아준다.
이후, while문을 돌아가면서 양쪽끝의 라이언들을 이동시켜주고 그 차이 값이 곧, 현재 라이언들이 K개로 묶여져있는 길이이기때문에 이 값을 result와 비교해주면서 최솟값을 갱신해준다.
right값이 lion 배열과 같아지는 순간은 이제 끝에 다다른 경우이므로 탐색을 종료시킨다.
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.split(" ").map(Number));
const [N, K] = input.shift();
const dolls = input[0];
function solution(N, K, dolls) {
const lion = [];
dolls.map((v, idx) => (v === 1 ? lion.push(idx) : ""));
// 초기 라이언 인형 숫자가 K보다 적을 시 바로 종료.
if (lion.length < K) return -1;
let result = Infinity;
let [left, right, cnt] = [0, K - 1, 0];
while (true) {
cnt = lion[right] - lion[left] + 1;
result = Math.min(result, cnt);
[left, right] = [left + 1, right + 1];
if (right === lion.length) break;
}
return result;
}
console.log(solution(N, K, dolls));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 21921 , 블로그 [슬라이딩 윈도우] (0) | 2022.10.04 |
---|---|
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 12891 , DNA 비밀번호 [슬라이딩 윈도우] (0) | 2022.10.03 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 14465 , 소가 길을 건너간 이유 5 (0) | 2022.10.01 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 2531 , 회전 초밥 (0) | 2022.09.30 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 10025 , 게으른 백곰 (1) | 2022.09.29 |