프로그래머스/Lv1

[프로그래머스/Javascript] Lv.1 문자열 나누기

woo.oing 2026. 1. 21. 15:31

https://school.programmers.co.kr/learn/courses/30/lessons/140108

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

✓ 풀이과정

 

1. 하나의 문자를 저장하고 이 문자의 개수와 이 문자와 다른 문자의 개수가 일치하면 카운트 하나 추가하고 다음 새로운 문자 저장

2. 문자열의 길이만큼 1번을 반복하고 마지막에 하나의 카운트로 계산되지 않는 문자열이 남으면 카운트 하나 추가

 

function solution(s) {
  let answer = 0;
  let str = "";
  let thisStrCnt = 0;
  let diffStrCnt = 0;

  for (let i = 0; i < s.length; i++) {
    let thisStr = s[i];

    if (thisStrCnt === 0) {
      str = thisStr;
      thisStrCnt++;
    } else if (str === thisStr) {
      thisStrCnt++;
    } else if (str !== thisStr) {
      diffStrCnt++;
    }

    if (thisStrCnt === diffStrCnt || i === s.length - 1) {
      answer++;
      str = "";
      thisStrCnt = 0;
      diffStrCnt = 0;
    }
  }

  return answer;
}

 

위 코드는 지금 문자와 일치하는 문자의 개수/지금 문자와 다른 문자의 개수를 별개의 변수로 각각 저장하고 있는데

하나의 변수를 +/- 하는 방법으로 수정했습니다

 

 

 최종코드

function solution(s) {
  let answer = 0;
  let str = "";
  let ctn = 0;

  for (let i = 0; i < s.length; i++) {
    let thisStr = s[i];

    if (ctn === 0) {
      str = thisStr;
      ctn++;
    } else {
      ctn += str === thisStr ? 1 : -1;
    }

    if (ctn === 0 || i === s.length - 1) {
      answer++;
      str = "";
      ctn = 0;
    }
  }

  return answer;
}