프로그래머스 JadenCase 문자열 만들기 java

정상민·2023년 7월 21일

문제링크

문제 접근

  • spilt해서 하려고 했으나 공백문자가 연속해서 나올 수 있으므로 그냥 for문 하나로 하자
  • 반복문 돌면서 isFirst 플래그로 단어의 첫 문자인지 확인
  • 공백 만났을 때
  1. 공백 붙히기
  2. isFirst True로 바꾸기
  • 단어의 첫 문자일 때(isFirst가 true인데 공백이 아닌 문자 만났을 때)
  1. 숫자 or 대문자면 그대로 붙히기
  2. 소문자면 대문자로 바꾸고 붙히기
  3. isFirst False로 바꾸기
  • 단어의 첫 문자가 아닌 문자일 때(isFirst가 false이고 문자일 때)
  1. 대문자면 소문자로 바꾸고 붙히기
  2. 소문자면 그대로 붙히기

코드

import java.util.*;
class Solution {
    public String solution(String s) {
        StringBuilder answer = new StringBuilder();
        String[] words = s.split(" ");
        boolean isFirst = true;
        for(int i=0;i<s.length();i++){
            char now = s.charAt(i);
            // 공백 만났을 때
            if(now == ' '){
                answer.append(' ');
                isFirst = true;
            }
            // 단어의 첫 단어일 때
            else if(isFirst && now >= 48 && now <= 57){
                answer.append(now);
                isFirst = false;
            }
            else if(isFirst && now >= 65 && now <= 90){
                answer.append(now);
                isFirst = false;
            }
            else if(isFirst && now >= 97 && now <= 122){
                isFirst = false;
                answer.append((char) (now-32) );
            }
            // 단어의 첫 단어가 아닐 때
            else if(!isFirst && now >= 65 && now <= 90){
                answer.append((char) (now+32) );
                isFirst = false;
            }
            else if(!isFirst && now >= 97 && now <= 122){
                isFirst = false;
                answer.append(now);
            }
        }
        return answer.toString();
    }
}

결과

정리

  • 공백이 연속으로 있는 문자열에 대해 split() 결과가 확실하지 않았다.
profile
안녕하세요! 개인 공부를 꾸준히 기록하는 공간입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

뛰어난 글이네요, 감사합니다.

답글 달기