[ 99클럽/챌린저 ] 6일차 TIL : 문자열 나누기

NaHyun_kkiimm·2024년 4월 7일
0

99클럽

목록 보기
7/13
post-thumbnail

문제 요약

문자열 s에 대하여 다음 규칙에 따라 해당 문자열을 여러 문자열로 나눌 것이다.

  • 첫 글자를 읽고, 이를 x라고 한다.
  • 해당 문자열 이후의 문자열들을 읽으며, x인 글자와 x가 아닌 글자의 수를 센다. 만일 각 경우의 개수가 같다면, 읽기를 멈추고 지금까지 읽은 문자열을 분리한다.
  • s를 분리하고 남은 문자열에서 위 과정을 다시 반복한다.
    • 만일 더 이상 읽을 부분이 없다면 멈추고 종료한다.
  • 최종적으로, 분리된 문자열의 개수를 반환한다.

[ 예시 ]

sresult
"banana"3
"abracadabra"6
"aaabbaccccabba"3

[ 제약 조건 ]

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

[ 프로그래머스 ]


풀이

(1) 첫 번째 문자열을 x에 저장한다.
(2) x와 같은 문자를 세는 변수 same과 다른 문자를 세는 변수 diff를 각각 0으로 초기화한다.
(3) 0부터 s.length()까지 세며, 같은 문자의 개수와 다른 문자의 개수를 센다.
(4) 만일 두 변수(diffsame)의 값이 같다면, answer을 증감시키고, 그 다음 문자열을 x로 지정한다.


Code

class Solution {
    public int solution(String s) {
        int answer = 0;
        int same = 0;
        int diff = 0;
        char ch = s.charAt(0);
        
        for(int i=0;i<s.length();i++) {
            if (same == diff) {
                answer++;
                ch = s.charAt(i);
            }
            if (s.charAt(i) == ch) same++;
            else diff++;
        }
        
        return answer;
    }
}

느낀점

문제로 주어진 조건을 차근차근 코드로 변환하면 되는 풀기 쉬운 문제이다

profile
이 또한 지나가리라

1개의 댓글

comment-user-thumbnail
2024년 4월 9일

안녕하세요, 99클럽 그룹 리더 조커입니다!
풀이 잘 봤습니당
앞으로도 힘내서 매일 TIL 도전해 보세요! 화이팅입니다 :)

99클럽 https://bit.ly/3TN5TBL

답글 달기