본문 바로가기

[IT] 코딩테스트/[문제 및 풀이] 프로그래머스

[프로그래머스] 문자열 나누기 / 자바(Java)

728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


해설

문자열 s를 왼쪽에서 오른쪽으로 진행합니다

 

1. 첫 글자를 읽고 해당 글자를 'cur'이라고 합니다

 

2. 이후로 문자열을 계속 읽어나가며 'cur'과 'cur'이 아닌 문자의 수가 같아지는 순간 문자열을 분리합니다.

 

3. 더이상 읽을 글자가 없다면 지금까지 읽은 문자열을 따로 분리하고 종료합니다.


이 3가지 규칙을 준수하기 위해

1번 규칙을 위해 문자열을 훑는 for문을 만들어 분리될 문자열의 첫 글자들을 저장해 둡니다.

 

2번 규칙을 위해 counter를 설정해 cur과 같은 문자가 나왔다면 counter를 늘려주고 아니라면 감소시켜

counter가 0이 되는 경우(문자의 수가 같아지는 경우) 내부 while문을 나가며 문자열의 개수를 늘리는 while문을 만들어줍니다. 

 

3번 규칙을 위해 위의 while문의 종료 조건에 문자열을 모두 읽어낸 경우를 추가해 줍니다.


코드

class Solution {
    public int solution(String s) {
        int answer = 0, counter;
        char cur;
        for(int i=0;i<s.length();i++){
            cur = s.charAt(i);
            counter=1;
            while(true){
                i++;
                if(i==s.length()){
                    answer++;
                    break;
                }
                if(cur==s.charAt(i)){
                    counter++;
                }else{
                    counter--;
                }
                if(counter==0){
                    answer++;
                    break;
                }
            }
        }
        return answer;
    }
}

 

728x90