자바스크립트 코딩테스트

프로그래머스 Level 1 - 문자열 나누기 (Javascript)

준벨롭 2023. 11. 24. 13:52

문제

답안

function solution(s) {
    let x = 0;
    let countX = 0;
    let answer = [];
    
    // 0번째 글자와 i번째 글자가 같다면 countX를 더해준다.
    // 다르다면 countX를 빼주고, 만약 countX가 0이라면, 0부터 i까지 글자를 answer에 넣어준다.
    // 넣어주고, x는 i+1로 바꿔준 뒤에 다시 for문에 진입한다.
    for(let i = 0; i < s.length; i++){
        if(s[i] === s[x])countX++;
        else countX--;
        if(countX === 0){
            answer.push(s.substring(x,i+1));
            x = i+1;
        }
    }
    
    
    // answer의 길이와 s의 길이가 같다면, answer의 길이를 출력하고, 다르다면 answer에 1을 더한 값을 출력해준다.
    // 1을 더하는 것은, 남은 글자들을 처리하는 것이다.(입출력 예 2 번의 마지막 글자인 a와 같은 경우)
    return answer.join('').length === s.length ? answer.length : answer.length+1;
}

후기

countX가 0이 되는 순간 바로 answer에 문자열을 자른 값을 넣는 방법이 쉽게 떠오르지 않아 고민했다.

728x90