본문 바로가기
Java/알고리즘

JadenCase 문자열

by 티코딩 2024. 2. 8.

ㅇ 1차풀이

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

        for (char c : s.toCharArray()) {
            if (Character.isLetter(c)) {
                result.append(Character.toLowerCase(c));
            }else {
                result.append(c);
            }
        }
        String convertS = result.toString();
        String[] S = convertS.split(" ");

        for(int i = 0; i < S.length; i++) {
            if(Character.isLetter(S[i].charAt(0))){
                S[i]= Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
            }
            answer += S[i] + " ";
        }
        return answer.substring(0,answer.length()-1);
    }
}

답은 나온다. 근데 테스트케이스가 조금만 복잡해지면 런타임 에러가 난다. 내가봐도 코드가 드릅다.

 

ㅇ 2차 시도

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

        for (char c : s.toCharArray()) {
            if (Character.isLetter(c)) {
                result.append(Character.toLowerCase(c));
            }else {
                result.append(c);
            }
        }
        String convertS = result.toString();
        String[] S = convertS.split(" ");

        for(int i = 0; i < S.length; i++) {
        	//이부분이 수정됨.
            if(!S[i].isEmpty() && Character.isLetter(S[i].charAt(0))){
                S[i]= Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
            }
            answer += S[i] + " ";
        }
        return answer.substring(0,answer.length()-1);
    }

주석 처리 한 부분이 수정되었다. 난 참 편협했다. 난 모든 케이스가 " "스페이스 한번만으로 띄어져있을 줄 알았다. 만약 두번이상 띄어져있으면 StringIndexOutOfBoundsException이 나온다.

그래서 빈부분일때라는 조건을 넣어주었다.

하지만...!!!

이게 무엇? 넌 누구냐.

좀 찾아보니,"  for the what 1what  "이 주어지면 , "  For The What 1what  " 이 되야한다. 즉 마지막 공백처리도 해줘야하는것이다.

으아아아 멘탈.

 

ㅇ 마지막 도전

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

    for (char c : s.toCharArray()) {
        if (Character.isLetter(c)) {
            result.append(Character.toLowerCase(c));
        } else {
            result.append(c);
        }
    }
    String convertS = result.toString();
    String[] S = convertS.split(" ", -1); // 마지막 공백 유지

    for (int i = 0; i < S.length; i++) {
        if (!S[i].isEmpty() && Character.isLetter(S[i].charAt(0))) {
            S[i] = Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
        }
        answer += S[i] + " ";
    }
    return answer.substring(0, answer.length() - 1);
    }

끝!

'Java > 알고리즘' 카테고리의 다른 글

올바른괄호  (0) 2024.02.14
최솟값만들기  (0) 2024.02.13
다시 lv2로  (0) 2024.02.07
최대공약수와 최소공배수  (1) 2024.02.06
3진법 뒤집기  (0) 2024.02.05