코딩 테스트/프로그래머스

프로그래머스 - JadenCase 문자열 만들기 문제 (자바)

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

 

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

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

programmers.co.kr

개인적으로 굉장히 구진 문제라고 생각하는데 

이유는 

1. 공백이 여러개 겹쳐있는 경우

예시에서는 공백이 문자마다 하나씩있는데 테스트 케이스안에는 "   " 이런식으로 여러개가 붙어있는 경우가 있는 듯하다. 그래서 처음에 split을 통해서 처리했을 때 문제가 발생한다.

 

2. 공백 문자열을 다 살려야 한다.

공백 문자가 문장에 맨앞, 맨뒤 어디에 얼마나 붙어있든 상관없이 공백 전체를 살려야한다.

 

암튼 해결 방식은 문자열 전체를 char[]로 만들어서 하나씩 check한다.

이 과정에서 앞의 문자가 공백이면 대문자로 아니면 소문자로 처리하였다.

// 프로그래머스 JadenCase 문자열 만들기 문제
class Solution {
    public String solution(String s) {
        char[] chars = s.toCharArray();

        boolean isPreBlank  = true;
        StringBuilder answer = new StringBuilder();
        for (char aChar : chars) {
            if (aChar == ' ') {
                answer.append(' ');
                isPreBlank =true;
            }else {
                if (isPreBlank) {
                    isPreBlank = false;
                    answer.append(String.valueOf(aChar).toUpperCase());
                }else {
                    answer.append(String.valueOf(aChar).toLowerCase());
                }
            }
        }
        return answer.toString();
    }
}