본문 바로가기

코딩테스트

[프로그래머스] [Java] JadenCase 문자열 만들기

문제 설명

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

문제 풀이

  1. 문자열을 공백 기준으로 나누는 것이 아니라, 문자열을 한 글자씩 순회하면서 처리해야 함
  2. (왜냐하면 "  hello  world "처럼 공백이 연속될 수 있기 때문)
  3. 첫 글자이거나 앞 문자가 공백이면 → 대문자로 변환
  4. 그 외 → 소문자로 변환
class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        boolean isStartOfWord = true; //단어의 시작 여부
        
        for (char c : s.toCharArray()) {
            if (isStartOfWord) {
                if (Character.isLetter(c)) {
                    sb.append(Character.toUpperCase(c));
                } else {
                    sb.append(c);
                }
                isStartOfWord = false;
            } else {
                sb.append(Character.toLowerCase(c));
            }

            if (c == ' ') {
                isStartOfWord = true;
            }
        }

        return sb.toString();
    }
}