Development Logs/Algorithms

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

유뱅유뱅뱅 2020. 8. 28. 12:24

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

 

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

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

programmers.co.kr

해결 방안

s를 함부로 split 하게 되는 경우 주어진 s  중 3People__abc 와 같은 경우 두 번 띄어쓰기를 처리하는데 어려움을 겪었다. 따라서 StringBuilder를 이용하여 i일 때 i-1 인덱스가 " "인 경우 대문자로 변환해주었다.
이 때 StringBuilder의 setCharAt()을 이용하여 i번 째 char형을 쉽게 바꿀 수 있었으며 Character.toUpperCase()를 이용하여 해당 char를 대문자로 바꿀 수 있다.

* StringBuilder의 setCharAt(int i, char c) :  StringBuilder 변수의 i번째 index의 character를 c로 바꿔준다.

Character.toUpperCase(char c) : c를 대문자로
Character.toLowerCase(char c) : c를 소문자로  

코드

//JadenCase 문자열 만들기
class Solution {
    public String solution(String s) {
        String answer = "";
        
        s = s.toLowerCase();
        
        StringBuilder sb = new StringBuilder(s);
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == ' '){
                continue;
            }
            
            if(i==0)
                sb.setCharAt(i, Character.toUpperCase(s.charAt(i)));
            else if(i>0){
                if(s.charAt(i-1) == ' ')
                    sb.setCharAt(i, Character.toUpperCase(s.charAt(i)));
            }
        }
        
        answer = new String(sb);
        
        return answer;
    }
}