[Algorithm] JadenCase 문자열 만들기

Jong Min ·2025년 4월 17일

Algorithm

목록 보기
29/30
post-thumbnail

🍭 프로그래머스 12951번 – JadenCase 문자열 만들기

🔗 JadenCase 문자열 만들기


📌 문제 설명

주어진 문자열 s를 JadenCase 형태로 바꾸려 합니다.

  • 각 단어의 첫 글자대문자로, 나머지 글자는 소문자로 바꿔야 합니다.
  • 단어는 공백(' ') 하나로 구분하며, 공백이 연속해서 나올 수도 있습니다.
  • 숫자나 공백 뒤에 오는 문자는 단어의 첫 글자로 간주됩니다.
  • 알파벳이 아닌 문자는 대·소문자 변환 대상이 아니며, 그대로 두면 됩니다.

제한 조건

  • s의 길이는 1 이상 200 이하입니다.
  • s는 알파벳, 숫자, 공백으로 이루어져 있습니다.
  • 처음과 끝이 공백일 수도 있습니다.
  • 공백이 연속해서 나올 수도 있습니다.

🧩 예제 입력 및 출력

// 입력
"3people unFollowed me"

// 출력
"3people Unfollowed Me"

💡 문제 핵심

  • 단어의 경계를 어떻게 감지할 것인지
  • 첫 글자나머지 글자를 구분해 대문자/소문자로 변환하는 방법
  • 숫자나 공백이 나오면 단어의 시작 여부를 재설정

✅ 자바 코드

public class Solution {
    public static void main(String[] args) {
        System.out.println(solution("3people unFollowed me"));
    }

    public static String solution(String s) {
        int idx = 0;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            // 공백이면 다음 글자를 단어 첫 글자로 만들기 위해 idx 초기화
            if (c == ' ') {
                sb.append(c);
                idx = -1;
            }
            // 숫자는 변환 없이 그대로 추가
            else if (Character.isDigit(c)) {
                sb.append(c);
            }
            // 첫 글자면 대문자, 아니면 소문자
            else if (idx == 0) {
                sb.append(Character.toUpperCase(c));
            } else {
                sb.append(Character.toLowerCase(c));
            }
            idx++;
        }
        return sb.toString();
    }
}

🧠 배운 점

  • 인덱스 카운팅을 활용해 “단어의 첫 글자” 여부를 쉽게 판단할 수 있다.
  • Character 클래스의 isDigit, toUpperCase, toLowerCase 메서드를 활용해 문자 타입별로 깔끔하게 처리 가능.
  • 문자열 문제에서는 공백 처리가 핵심이 되는 경우가 많으므로, 경계 상황(연속된 공백, 앞뒤 공백 등)을 꼭 고려하자.
profile
노력

0개의 댓글