본문 바로가기

문제 풀이/Programmers

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

문제 출처 - Programmers

문제는 여기

 

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

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고

programmers.co.kr


[풀이]

1. 입력되는 문자열을 toLowerCase로 모든 문자를 소문자로 바꿔준다.

2. split을 사용해서 모든 문자를 잘라서 배열에 넣어준다.

3. 공백 체크를 해줄 변수를 선언해준다.

4. 이전에 공백이 왔는지 체크를 해준다.

5. 이전에 공백이라면 대문자로 바꿔주고 아니라면 소문자로 둔다.

6. 모든 문자를 탐색한다.

7. 결과를 출력한다.

[접근]

1. 모든 문자를 소문자로 만들어주고 각 문자를 split으로 잘라서 배열에 담아주면 되겠다고 생각하였다.

2. 배열에 들어있는 문자들을 체크하면서 공백이 이전에 왔었다면 대문자로 바꿔주면 되겠다고 생각하였다.

[실수]

1. 공백이 여러 개 올 경우 반환하는 값도 여러 개가 되어야 하지만 split(" ")으로 공백 단위로 자르게 되면 결과에 공백 여러 개를 넣어주지 못하게 되어 틀린 답이 나온다.

[코드]

class Solution {
    public String solution(String s) {
        String answer = "";
        // 각 단어의 첫글자만 제외하고는 소문자이므로
        // 전체를 소문자로 먼저 만들어준다.
        // 문자열 공백을 기준으로 잘라서 넣기
        String[] str = s.toLowerCase().split("");
        // 이전이 공백인지 체크
        boolean space = true;

        for(String ss : str) {
            // space가 true면 대문자로, 아니면 그냥 그대로 사용
            answer += space ? ss.toUpperCase() : ss;
            // 공백이 오면 space를 true 아니면 false
            space = ss.equals(" ") ? true : false;
        }
        
        return answer;
    }
}