[leetcode, JS] 2379. Minimum Recolors to Get K Consecutive Black Blocks

mxxn·2024년 5월 22일
0

leetcode

목록 보기
159/198

문제

문제 링크 : Minimum Recolors to Get K Consecutive Black Blocks

풀이

/**
 * @param {string} blocks
 * @param {number} k
 * @return {number}
 */
var minimumRecolors = function(blocks, k) {
    const nBlk = 'B'.repeat(k)
    if(blocks.includes(nBlk)) return 0

    let min = k
    let current = 0
    let start = 0

    for(let end=0; end<blocks.length; end++){
        if(blocks[end] === 'W') {
            current++;
        }
        
        if(end+1>=k) {
            min = Math.min(min, current)

            if(blocks[start++] === 'W') {
                current--
            }
        }
    }

    return min
};
  1. 'B'가 k번 연속된 string이 있으면 0 return

  2. sliding Windos 활용한 풀이

  3. return할 min값, 현재 최소값인 current, length가 k인걸 맞추기 위한 start 변수를 설정하고

  4. blocks를 순회하며, 문자가 'W'일때 curruent ++, end+1이 k 이상일때부턴 start값이 W면 current--와 start++

  • Runtime 49 ms, Memory 49.64 ms,
profile
내일도 글쓰기

0개의 댓글