Sqsung DevLog

[백준] 20365번: 블로그2 - Node.js (자바스크립트) 본문

Algorithm

[백준] 20365번: 블로그2 - Node.js (자바스크립트)

sqsung 2023. 6. 16. 15:49

1. 문제 ㅡ 20365번: 블로그 2 (난이도: Silver III)

 

20365번: 블로그2

neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한

www.acmicpc.net

2. 풀이 ㅡ Node.js (자바스크립트)

const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

const getMinStroke = tc => {
  const [N, strokes] = [+tc[0], tc[1]];
  // first는 첫 번째 색상을 나타낸다 (: 'R' | 'B') 
  const first = strokes[0];
  let count = 1;

  for (let i = 1; i < N; i++) { 
    // 현재 순회 중인 값이 first와 다르면서 이전 값과 다른 경우 
    if (strokes[i] !== first && strokes[i] !== strokes[i - 1]) count += 1;
  }

  return count;
};

console.log(getMinStroke(input));

2-1. 풀이 설명

  • 일우가 칠해야 하는 색상들로 구성된 strokes 중 첫 번째 색상(first)을 기준으로 잡는다
  • strokes를 순회하면서 현재 색상이 first와 다른면서 이전 값과 다른지 확인한다
  • 해당 조건에 일치할 때마다 count를 1씩 증가시키고, 반복문이 끝나면 누적된 count를 반환한다