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

2025. 7. 18. 19:29·CodingTest/Programmers

사진을 클릭하면 해당 문제로 이동

💡풀이

class Solution {
    public int solution(String s) {
        int answer = 0;

        // A 라벨: continue A를 통해 이 while 루프의 처음으로 바로 돌아가기 위함
        A:
        while(!s.isEmpty()) {

            for(int i = 0; i < s.length(); i++) {
                String temp = s.substring(0, i + 1); // 현재 검사할 부분 문자열
                char x = temp.charAt(0);     // 기준이 되는 첫 글자

                // temp에서 첫 글자(x)의 개수와 다른 글자(y)의 개수를 센다
                int yCount = temp.replace(String.valueOf(x), "").length();
                int xCount = temp.length() - yCount;

                // x의 개수와 y의 개수가 같아지는 순간, 문자열을 분리한다
                if(xCount == yCount) {
                    s = s.substring(i + 1);
                    answer++;
                    continue A; // 처음부터 다시 시작
                }
            }
            // for문이 끝까지 돌았는데 분리 지점을 못 찾은 경우
            break; // 더 이상 분해할 수 없으므로 루프 탈출
        }

        // 루프 종료 후 남은 문자열이 있다면 1을 더해준다.
        return s.isEmpty() ? answer : answer + 1;
    }
}

📖새로 배운 부분

💡replace와 replaceAll

replace : 바꾸려는 대상이 고정된 문자열일 때 (예: "apple", " ", "\n")
replaceAll : 패턴으로 문자를 찾고 싶을 때 (예: "[0-9]"  "[^p]" 등등)

 

관련 정리 글

 

[java] replace()와 replaceAll()의 차이점

replace()와 replaceAll() 정확히 알고 사용하기 Java에서 문자열을 치환할 때 replace()와 replaceAll()은 가장 흔하게 사용되는 메서드입니다.이름이 비슷해서 많은 개발자들이 혼용하곤 하지만, 이 둘은 결

devoks.tistory.com


 

GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.

프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.

github.com

 

'CodingTest > Programmers' 카테고리의 다른 글

[프로그래머스, Java][PCCE 기출문제] 9번 / 이웃한 칸  (0) 2025.07.18
[프로그래머스, Java] 대충 만든 자판  (0) 2025.07.18
[프로그래머스, Java] 둘만의 암호  (0) 2025.07.18
[프로그래머스, Java] 로또의 최고 순위와 최저 순위  (0) 2025.07.18
[프로그래머스, Java][1차] 다트 게임  (0) 2025.07.18
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스, Java][PCCE 기출문제] 9번 / 이웃한 칸
  • [프로그래머스, Java] 대충 만든 자판
  • [프로그래머스, Java] 둘만의 암호
  • [프로그래머스, Java] 로또의 최고 순위와 최저 순위
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    programmers
    codingtest
    json
    StringTokenizer
    switch
    CS
    BufferedWriter
    BufferedReader
    effectivejava
    java
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[프로그래머스, Java] 문자열 나누기
상단으로

티스토리툴바