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

JIHYUN·2021년 8월 31일
0
post-thumbnail

📌JadenCase 문자열 만들기

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

📌제한사항

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

📌입 출력 예

sreturn
"3people unFollowed me""3people Unfollowed Me"
"for the last week""For The Last Week"

📌사용 언어 : JAVA

📌solution_01

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] arr = s.split(" ");

        for(int i = 0; i < arr.length; i++){
            String first = arr[i].substring(0,1);
            first = first.toUpperCase();
            String remain = arr[i].substring(1, arr[i].length());
            remain = remain.toLowerCase();
            if(i == arr.length-1){
                answer += first + remain;
            }else{
                answer += first + remain + " ";
            }
        }

        return answer;
    }
}

😦문제 발생

입력받은 문자열 s를 공백기준으로 자르고 배열에 arr에 담아 arr의 원소들의 첫 번째 글자를 잘라 그것만 대문자로 바꾸면 되겠지 해서 first와 remain으로 나누어 arr의 원소들을 정리했는데 런타임에러가 우다다다 뜨기 시작했다.

📌solution_02

class Solution {
    public String solution(String s) {
        String answer = "";

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

        for(int i = 0; i < arr.length; i++){

            if (arr[i].equals("")) {
                answer += arr[i];
            } else {
                answer += arr[i].substring(0, 1).toUpperCase() + arr[i].substring(1);
            }
            
            if (i < arr.length - 1)
                answer += " ";
        }
        
        if (" ".equals(s.substring(s.length()-1))) 
            answer += " ";
        return answer;
    }
}

😎풀이

찾아보니 테스트케이스에 공백의 갯수가 두 개 이상 들어간 것들이 있단다. 그러면 solution_01처럼 하면 공백이 제대로 출력되지 않는 현상이 발생한다... 그래서 arr[i]가 공백일 경우 answer에 그대로 공백을 더해주는 코드를 출력하고 전체적으로 다듬었다.

profile
이것저것 공부중

0개의 댓글