[프로그래머스] Level2 _12951번: JadenCase 문자열 만들기 (JAVA)

반응형
728x90
반응형

문제 12901번

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

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건

programmers.co.kr

 

 

 

 

 

풀이

(1) 런타임 에러 발생

예시로 "3people Unfollowed     Me" 처럼 공백이 2개 이상 들어간 경우 발생한다.

public String solution(String s) {
    StringBuilder answer = new StringBuilder();

    String[] arr = s.split(" ");

    for (String value : arr) {
    	char first = value.charAt(0);

    	answer.append(String.valueOf(first).toUpperCase())
        	  .append(value.substring(1).toLowerCase())
              .append(" ");
    }


    return answer.toString().trim();
}

 

 

(2) 다른 방안

문자열을 반복문으로 전부 체크한다. isFirst 라는 값으로 첫번째 문자열 (대문자로 변환될) 인지 체크하고, 그 외는 소문자로 변환한다. 

public String solution(String s) {
    StringBuilder answer = new StringBuilder();

    /* 첫번째 문자 여부 */
    boolean isFirst = true;

    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == ' ') {
            answer.append(s.charAt(i));
            isFirst = true; /* 공백 다음엔 첫번째 문자 */
        } else {
            if (isFirst) { /* 첫번째 문자의 경우 */
                answer.append(String.valueOf(s.charAt(i)).toUpperCase());
                isFirst = false; /* 첫번째 문자가 아님 */
            } else {
                answer.append(String.valueOf(s.charAt(i)).toLowerCase());
            }
        }
    }

    return answer.toString();
}

 

 

반응형

Designed by JB FACTORY