본문으로 바로가기

JadenCase 문자열 만들기

category 알고리즘 2023. 11. 20. 22:32

문제 설명

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

제한 조건
  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.
입출력 예sreturn
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"

class Solution {
    public String solution(String s) {
        
        s = s.toLowerCase();
        
        StringTokenizer st = new StringTokenizer(s, " ", true);
        StringBuilder sb = new StringBuilder();
        while(st.hasMoreTokens())
        {
            String word = st.nextToken();
            if(word.equals(" "))
            {
                sb.append(word);
            }
            else{
                sb.append(word.substring(0,1).toUpperCase() + word.substring(1));
            }
        }
          return sb.toString();     
    }
}

 

class Solution {
  public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean flag = true;

        for(String ss : sp) {
            answer += flag ? ss.toUpperCase() : ss;
            flag = ss.equals(" ") ? true : false;
        }

        return answer;
  }
}

 

테스트 1 통과 (2.12ms, 78.8MB)
테스트 2 통과 (2.12ms, 72.8MB)
테스트 3 통과 (1.59ms, 75.3MB)
테스트 4 통과 (3.91ms, 78.7MB)
테스트 5 통과 (2.26ms, 71.5MB)
테스트 6 통과 (1.77ms, 74.8MB)
테스트 7 통과 (2.07ms, 83.6MB)
테스트 8 통과 (1.35ms, 74.2MB)
테스트 9 통과 (1.89ms, 76MB)
테스트 10 통과 (2.31ms, 70.7MB)
테스트 11 통과 (2.13ms, 72.8MB)
테스트 12 통과 (3.97ms, 76.5MB)
테스트 13 통과 (1.78ms, 72MB)
테스트 14 통과 (2.27ms, 74.8MB)
테스트 15 통과 (2.58ms, 78.5MB)
테스트 16 통과 (1.99ms, 80MB)

 

코드는 더 간결하지만, 시간으로 보아 더 오래걸리는 것으로 보인다.

확실히 Tonizer 방식이 속도 측면에서 빠른건가? 다음시간에 알아보자.