Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

[백준 15565 - Node.js] 귀여운 라이언
연습장/백준(BOJ) 문제풀이

[백준 15565 - Node.js] 귀여운 라이언

2023. 1. 11. 03:59

🔗 문제 링크

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

 

15565번: 귀여운 라이언

꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의

www.acmicpc.net

✏️ 풀이

const [[N, K], dolls] = require('fs')
  .readFileSync('/dev/stdin')
  .toString()
  .trim()
  .split('\n')
  .map(v => v.split(' ').map(Number));

let count = 0;
let minCount = Infinity;
let i = 0;
let j = 0;

while (j < N) {
  if (dolls[j] === 1) {
    count++;
  }

  while (count === K) {
    if (dolls[i] === 1) {
      count--;
    }
    minCount = Math.min(minCount, j - i + 1);
    i++;
  }

  j++;
}

console.log(minCount === Infinity ? -1 : minCount);

집합의 시작점을 i, 끝을 j라고 할 때, j를 1씩 증가시키면서 dolls[j]가 라이언 인형일 때마다 count를 증가시킨다.

 

만약 count가 K개가 되었다면 시작점 i를 가장 가까운 라이언 인형의 인덱스까지 증가시킨 후에 집합의 최소 크기를 갱신한다. count가 K개일 때 집합 크기가 최소가 되려면 집합의 맨 앞 뒤가 모두 라이언 인형일 수밖에 없으므로 이렇게 하였다.

 

반복이 끝났을 때 minCount가 갱신된 적이 없으면 -1을 반환하고, 그 외에는 갱신된 minCount를 반환한다.

저작자표시 비영리 (새창열림)

'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글

[백준 1644 - Node.js] 소수의 연속합  (0) 2023.01.12
[백준 1806 - Node.js] 부분합  (0) 2023.01.11
[백준 20922 - Node.js] 겹치는 건 싫어  (0) 2023.01.10
[백준 2531 - Node.js] 회전 초밥  (1) 2023.01.09
[백준 2230 - Node.js] 수 고르기  (0) 2023.01.06
    '연습장/백준(BOJ) 문제풀이' 카테고리의 다른 글
    • [백준 1644 - Node.js] 소수의 연속합
    • [백준 1806 - Node.js] 부분합
    • [백준 20922 - Node.js] 겹치는 건 싫어
    • [백준 2531 - Node.js] 회전 초밥
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바