ALGORITHM/PROGRAMMERS

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

0298 2021. 7. 21. 22:11

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

 

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

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

programmers.co.kr

2021-07-21


1. String

1
2
3
4
5
6
7
8
9
10
11
12
13
   public static String solution(String s) {
        String answer = "";
        if(s.length() == 0return "";
        String[] arr = s.toLowerCase().split(" ");
        for(int i = 0; i < arr.length; i++) {
            if(arr[i].length() > 0) {
                answer += arr[i].replaceFirst(String.valueOf(arr[i].charAt(0)), String.valueOf(arr[i].charAt(0)).toUpperCase());
                answer += (i == arr.length-1 && s.charAt(s.length()-1!= ' ') ? "" : " ";
            } else answer += " ";
        }
 
        return answer;
    }
cs

 

2. StringBuilder

1
2
3
4
5
6
7
8
9
10
11
12
13
    public static String solution(String s) {
        StringBuilder answer = new StringBuilder();
        if(s.length() == 0return "";
        String[] arr = s.toLowerCase().split(" ");
        for(int i = 0; i < arr.length; i++) {
            if(arr[i].length() > 0) {
                answer.append(arr[i].replaceFirst(String.valueOf(arr[i].charAt(0)), String.valueOf(arr[i].charAt(0)).toUpperCase()));
                answer.append((i == arr.length - 1 && s.charAt(s.length() - 1!= ' ') ? "" : " ");
            } else answer.append(" ");
        }
 
        return answer.toString();
    }
cs

 

#문제풀이

String과 StringBuilder 두 방법으로 돌려봤다.

 

0. 만약 들어온 값의 length가 0이면 그냥 빈 값을 return 한다.

 

1. 문자를 모두 LowerCase로 바꾼 후, " " 공백을 기준으로 split하여 String 배열에 넣는다.

 

2. String arr를 돌면서, 값이 0보다 큰 경우와 0인 경우로 나눠서 생각한다.

2-1. 값이 0보다 큰 경우, 맨 앞에 문자를 upperCase로 바꾸고, 나머지는 그대로 사용한다. 그리고 맨 마지막 문자가 아닌 경우 뒤에  " " " 공백 문자를 붙여준다.

2-2. 값이 0인 경우, 공백이라는 의미 이므로 그냥 " " 공백 문자를 추가해준다.

 

만약, 답이 제대로 안 나오면 

테스트로 "aaaa  aa a aaa a a a "를 돌려서 "Aaaa   Aa A Aaa A A A " 이렇게 나오는지 체크 해보면 틀린점을 발견할 수도 있다.