프로그래머스

프로그래머스_JadenCase_자바

o늘do 2020. 6. 7. 22:44

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

 

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

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

programmers.co.kr

문제를 풀때 공백이 길던 짧던 공백을 기준으로 다음 처음 문자열을 대문자로 바꿔주면된다.

이때 숫자를 toUpperCase() 해도 그대로 이기때문에 신경쓰지않아도 된다.

 

즉 처음 받는 문자열을 소문자로 받아준다음에 공백다음에 오는 첫문자만 대문자로 바꿔주면된다.

현재값이 공백인지 확인하기 위해서 boolean 변수를 하나 둔다음에 문제를 풀어나가면된다.

class Solution {
    public String solution(String s) {
        String answer = "";
        s = s.toLowerCase();
        //처음에 true 로하는 이유는 처음오는 문자를 무조건 대문자로 바꾸기위해서
        boolean isUpper = true;
        for(int i = 0; i < s.length(); i++) {
        // 공백이면 공백을 문자열에 추가해주고 다음에 올 문자는 대문자로 바꿔줘야 하기때문에
        // isUpper 변수를 true로 바꿔준다.
        	if(s.charAt(i) == ' ') {
        		isUpper = true;
        		answer+=' ';
        	}else {
            // 공백다음에 오는 문자이기때문에 대문자로 바꿔준다 그리고 다음 공백이 오기전까지는
            // 나머지 문자열들을 소문자로 처리해야하기 때문에 isUpper 을 false 로바꿔준다.
            // String.valueOf() 안에 char 문자를 넣어주면 String 으로 바꿔주기 때문에
            // toUpperCase 를 적용할 수 있다.
        		answer += isUpper ? String.valueOf(s.charAt(i)).toUpperCase() : s.charAt(i);
        		isUpper = false;
        	}
        }
        
        return answer;
    }
}