JadenCase 문자열 만들기

유태형·2022년 2월 7일
0

문제

문제 분석

첫 문자는 대문자 나머지 문자는 소문자로 바꾸어야 하는 문제이다.(첫 문자가 숫자이면 상관x) 자바는 파이썬과 다르게 첫 문자만 바꾸는 메소드가 존재하지 않으므로
1. 첫 문자와 나머지 문자들을 분리
2. 첫 문자는 대문자 나머지 문자는 소문자
3. 합치는 작업
을 직접 구현해야 한다.


풀이

문제점

보통 일반적으로 생각하는, 첫 문자와 나머지 문자들을 분리후 String.toUpperCase()String.toLowerCase()사용 후 str1.concat(str2)str1.append(str2)로 합치면 단어에는 잘 적용 되지만 단어와 단어 사이 공백이 2개 이상일 경우 합치는 과정에서 공백이 누락하는 문제 발생!

한 문자씩

단어 단위로 나누고 조절하고 다시 합치는 알고리즘이 문제가 있다면 문자 단위로 확인 후 바꾸어 보자
한 문자씩 확인하여 이전 문자가 공백(' ')이었다면 현재 문자는 대문자가 와야 한다.
현재도 공백이고 이전도 공백이면 공백의 toUpperCase()는 같은 공백이니 걱정할 필요가 없다.

	for(int i=1;i<s.length();i++){ //두번째 문자부터 비교 시작
            temp = s.charAt(i);
            if(s.charAt(i-1) == ' ') //이전 문자가 공백이면
                temp = Character.toUpperCase(temp); //대문자
            else{ // 공백이 아니면
                temp = Character.toLowerCase(temp); //소문자
            }
            answer += temp; //문자를 추가
        }

코드

class Solution {
    public String solution(String s) {
        String answer = s.substring(0,1); 
        char temp; //비교할 문자를 저장
        answer = answer.toUpperCase(); //문장의 첫 문자는 무조건 대문자
        
        for(int i=1;i<s.length();i++){ //두번째 문자부터 비교 시작
            temp = s.charAt(i);
            if(s.charAt(i-1) == ' ') //이전 문자가 공백이면
                temp = Character.toUpperCase(temp); //대문자
            else{ // 공백이 아니면
                temp = Character.toLowerCase(temp); //소문자
            }
            answer += temp; //문자를 추가
        }
        return answer;
    }
}



GitHub

https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/JadenCase%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EB%A7%8C%EB%93%A4%EA%B8%B0.txt

profile
오늘도 내일도 화이팅!

0개의 댓글

관련 채용 정보