본문 바로가기

프로그래머스(Java)/Level 1

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

728x90

코드 힌트

  1. 문자 카운트하기:
    • 주어진 문자열에서 특정 문자(target)와 다른 문자의 개수를 추적해야합니다.
    • 저는 이를 위해 배열을 사용하였지만 변수로 +1 -1로 하셔도 무관합니다. 또는 2개의 변수를 사용하셔도 됩니다.
  2. 문자 개수 비교:
    • 문자열을 순회하면서 target 문자와 일치하는 경우와 그렇지 않을 경우 카운트를 관리합니다.
    • 카운트가 같아질 때마다 결과를 1 증가시킵니다. 이는 균형 잡힌 문자열이 하나 완성되었음을 의미합니다.
  3. 마지막 문자열 처리:
    • 반복이 끝난 후에도 카운트가 같지 않다면, 남아있는 문자열이 있으므로 결과에 1을 더해줍니다.

 

 


정답은 더보기 클릭

더보기
class Solution {
    public int solution(String s) {
        int result = 0; // 결과를 저장할 변수 초기화
        // 문자 개수를 저장할 배열. [0]은 target의 개수, [1]은 다른 문자의 개수
        int[] countArr = new int[2]; 
        char target = s.charAt(0); // 첫 번째 문자를 target으로 설정
        
        for (int i = 0; i < s.length(); i++) {
            if (target == s.charAt(i)) { // target 문자와 일치하는 경우
                countArr[0]++; // target 문자의 개수 증가
            } else { // target 문자와 일치하지 않는 경우
                countArr[1]++; // 다른 문자의 개수 증가
            }
            
            // target 문자와 다른 문자의 개수가 같아졌을 때
            if (countArr[0] == countArr[1]) {
                result++; // 균형 잡힌 문자열이 완성되었으므로 결과를 1 증가
                countArr = new int[2]; // 카운트 배열 초기화
                target = s.charAt((i+1) % s.length()); // 다음 target 문자 설정
            }
        }
        
        // 반복이 끝난 후에도 균형이 맞지 않는 경우 마지막 문자열 처리
        if (countArr[0] != countArr[1]) {
            return result + 1; // 남아있는 문자열을 포함하여 결과 반환
        }
        return result; // 최종 결과 반환
    }
}
728x90