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

fsm12·2023년 7월 6일
0

프로그래머스

목록 보기
30/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

s
문자열 | "banana" | 1 ≤ s의 길이 ≤ 10,000

[ 문제 ]

문자열들로 분해하고, 분해한 문자열의 개수를 return
( 첫 글자 x와 그 후에 나오는 글자들을 비교하여 x의 개수와 x가 아닌 개수가 같으면 문자열을 분해하고 다시 해당 과정을 반복 )

[ 풀이 ]

첫번째 문자를 저장하고, 이후에 나오는 문자가 같은 글자인지 체크 후 각각의 cnt를 증가
두 cnt가 같다면 이전에 쓴 변수들 초기화 및 ans 증가



코드

> [성공] 1차 시도 : 구현

  • 생각한 풀이 그대로 구현
class Solution {
    public int solution(String s) {
        int split_cnt = 1, std_cnt = 1, other_cnt = 0;
        char std = s.charAt(0);
        for(int i=1; i<s.length(); i++){
            char cur = s.charAt(i);
            if(cur == std)
                std_cnt++;
            else
                other_cnt++;
            
            if(std_cnt == other_cnt){
                if(s.length() <= ++i)
                    break;
                std = s.charAt(i);
                split_cnt++;
                
                std_cnt = 1;
                other_cnt = 0;
            }
        }
        
        return split_cnt;
    }
}




Tip : 배열의 인덱스를 증가할 때 크기보다 더 커질 경우가 있는지를 봐야한다.

0개의 댓글