본문 바로가기
알고리즘 문제/프로그래머스_Lv1 도장깨기

[프로그래머스] 문자열 나누기 (Javascript)

by 스코필 2025. 1. 20.

문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

문제 설명

문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.

 

1. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.

2-1. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다.

2-2. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.

3. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.

4. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.

제한 사항

  • 1 <= s의 길이 < 10,000
  • s는 영어 소문자로만 이루어져 있습니다.

 

✅ Code - 성공

function solution(s) {
    var answer = 0;
    s = s.split('');
        
    while (true) {
        const firstString = s[0];               // 1번 규칙
        
        let cnt1 = 0, cnt2 = 0;
        for (let i = 0; i < s.length; i++) {
            // 2-1번 규칙
            if (s[i] === firstString) cnt1++;
            else cnt2++;    
            // 2-2번 규칙
            if (cnt1 === cnt2) {
                s = s.slice(i + 1, s.length);
                answer++;
                break;
            }
        }
        
        if (s.length === 0) break;  // 3번 규칙
        
        // 4번 규칙
        if (cnt1 !== cnt2) {
            answer++;
            break;
        }        
    }    
    
    return answer;
}