호지

[프로그래머스] 문자열 나누기 문제풀이 JS 본문

알고리즘/프로그래머스

[프로그래머스] 문자열 나누기 문제풀이 JS

_hoji

이 문제는 문자열을 나누지 않아도 개수만 세면 되는 문제다.

따라서 주어진 s를 한번 탐색하면 원하는 결과를 얻을수있게된다.

 

초기의 x값은 s의 첫번째 문자고, x의 개수와 x가 아닌 문자의 개수를 셀 변수를 만든다.

그 후 주어진 s를 탐색하면서,

해당위치의 문자가 x랑 같으면 cntX를 1증가, 아니면 cntNotX를 1증가한다.

이때 cntX와 cntNotX의 값이 같으면 문자열이 나눠졌다고 생각하고,

정답값을 1증가하고, x는 다음 문자로 변경하고 cntX와 cntNot를 초기화한다.

 

이와 같이 반복했을 때,

마지막 위치의 문자는 그것을 포함했을때, 문자열이 나눠지거나 아니면 문자열이 남거나

결과적으로 answer이 1증가하게 되므로 마지막 문자는 확인하지 않고 마지막에 answer을 1증가한다.

 

function solution(s) {
  let x = s[0];
  let cntX = 1,
    cntNotX = 0;
  let answer = 0;
  for (let i = 1; i < s.length - 1; i++) {
    s[i] === x ? cntX++ : cntNotX++;
    if (cntX === cntNotX) {
      answer++;
      x = s[i + 1];
      cntX = 0;
      cntNotX = 0;
    }
  }
  return answer + 1;
}
Comments