코딩연습

(JavaScript) 문자열 나누기

Realuda72 2024. 12. 10. 10:02

내가 싫어하는 문자열 문제

 

먼저 한 블럭을 분해하는 부분을 작성한다.

    var x = s[0];	// x는 첫 문자
    // 어차피 x와 같은 문자, 다른 문자의 갯수를 비교해야 하므로 count 하나로 퉁친다.
    var count = 0;
    for(i = 0; i < s.length; i++){
        if(s[i] === x) count++;	
        else count--;
        if(count === 0){ // 갯수가 같다면 한 블럭을 완성하고 종료
            answer++;
            break;
        }
    }

 

 이제 이 코드를 적당히 반복하면 된다.

 이 코드에서는 s[0]을 시작점으로 잡았지만, 한 블럭을 완성하면 그 다음 문자가 시작점이 되기 때문에 이부분을 수정한다.

 while( ... ){
    p = 0	// 현재 위치를 p로 저장
    var x = s[p];
    var count = 0;
    for(i = 0; i < s.length; i++){
        if(s[i] === x) count++;	
        else count--;
        if(count === 0){
            answer++;
            p = i + 1; // 현재 위치는 마지막 위치에서 +1가 된다
            break;
        }
    }
}

 

 현재 위치를 p라는 변수로 저장하고, 한 블럭을 완성하면 현재 위치를 마지막 위치에 +1한다.

 조건은 p가 s.length보다 커야하고, i가 모두 순회를 마쳤을 때 count가 0이 아닌경우를 예외처리한다.

 

function solution(s) {
    var answer = 0;
    var p = 0;
    while(p < s.length){
        var x = s[p];
        var count = 0;
        for(i = p; i < s.length; i++){
            if(s[i] === x) count++;
            else count--;
            if(count === 0){
                answer++;
                p = i+1;
                break;
            }
        }
        if(count !== 0) {
            answer++;
            break;
        }
    }
    return answer;
}

'코딩연습' 카테고리의 다른 글

(JavaScript) 햄버거 만들기  (0) 2024.12.13
(JavaScript) 대충 만든 자판  (0) 2024.12.11
(JavaScript) 체육복  (0) 2024.12.10
(JavaScript) 숫자 짝꿍  (0) 2024.12.09
(JavaScript) 옹알이(2)  (0) 2024.12.09