[JS] 프로그래머스 Lv1 - 문자열 나누기

찐새·2023년 5월 17일
0

코딩테스트

목록 보기
47/53
post-thumbnail

문자열 나누기

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

코드

function solution(s) {
    let x = 1, y = 0, answer = 0, prev = s[0], i = 1;
    if (s.length === 1) return 1;
    for (const v of [...s].slice(1)) {   
        if (i === s.length - 1) {
            answer++;
            break;
        }
        i++;
        
        if (x === 0) {
            prev = v;
            x++;
            continue;   
        }
        
        if (prev === v) x++;
        if (prev !== v) y++;

        if (x === y) {
            answer++;
            x = 0;
            y = 0;
        }
    }
    return answer;
}

풀이

현재 문자와 다음 문자가 같은지 아닌지만 비교하고, 그에 따라 현재 문자 개수와 다른 문자 개수를 증가시키면서 같아질 때 answer를 증가시켰다.

두 가지 부분에서 헤맸는데, 하나는 마지막에 남는 문자열이었다. ababc를 예로 들면, ab-ab-c가 되어 c만 남게 된다. 이때는 비교할 문자 개수가 없어 answer를 증가시키지 않는다. 때문에 i를 두고 s.length - 1과 비교하여 같으면 answer++을 했다.

다른 하나는 s의 길이가 1일 때였다. 문자열 1개는 비교 대상이 없으므로 answer를 증가시키지 않는다. 이것을 제일 처음 분기로 하여 1을 반환했다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글