Algorithm/CodingTest

[Programmers] Level.1 문자열 나누기(Java)

누구세연 2023. 10. 15. 17:14

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

 

프로그래머스

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

programmers.co.kr

 

문자열 나누기 문제 Java로 풀이하겠습니다.

문제 설명
제한 사항 및 입출력 예

이 문제는 문자열을 분해하는 규칙을 적용하여 문자열을 분해하고, 분해한 문자열의 개수를 반환하는 함수를 작성해야 합니다.

 

다음과 같이 문제 풀이하였습니다.

class Solution {
    public int solution(String s) {
        int cnt = 0;
        int current = 0;
        char firstChar = s.charAt(0);

        char[] charArray = s.toCharArray();

        for (int i = 0; i < charArray.length; i++) {
            if (firstChar == charArray[i]) {
                current++;
            } else {
                current--;
            }
            if (current == 0 || i==charArray.length-1) {
                cnt++;
                if (i + 1 < charArray.length) {
                    firstChar = charArray[i + 1];
                }
            }
        }
        return cnt;
    }
}
  1. 먼저, 첫 번째 문자를 firstChar 변수에 저장해 줍니다.
  2. 문자열을 탐색하면서 현재 문자와 비교합니다.
    - firstChar 변수와 같은 문자라면 current 변수를 증가합니다.
    - firstChar 변수와 다른 문자라면 current 변수를 감소시킵니다.
  3. current 값이 0이 되거나 더 이상 처리할 문자가 없는 경우(i == charArray.length -1)에는 분리할 문자열의 개수를 증가시킵니다.
  4. 문자열의 개수를 증가시킨 후 다음 문자를 현재 문자로 업데이트합니다.

이러한 과정을 문자열의 끝까지 반복하여 분리된 문자열의 개수를 반환합니다.

 

 

다른 좋은 방안이 있다면 댓글로 의견 부탁드립니다.