csmoon1010의 SW 블로그

[200906] JadenCase 문자열 만들기 - 연습문제(level2) 본문

Coding Test/프로그래머스

[200906] JadenCase 문자열 만들기 - 연습문제(level2)

csmoon1010 2020. 9. 6. 16:49

1. 문제 이해

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

- JadenCase : 모든 단어의 첫 문자가 대문자, 그 외의 알파벳은 소문자인 문자열

(단, 첫 문자가 영문이 아닐 때 이어지는 영문은 소문자)

- 문자열 s를 JadenCase로 바꾼 문자열 리턴

 

 

2. 전략

1) 문자열의 각 문자에 대해서 반복 ( target = s.charAt(i) )

- 공백인 경우 : count를 0으로 초기화 / 공백

- 알파벳인 경우( ASCII 코드 값 : 65~122 )

    ⓐ 알파벳이 맞음

        - count == 0 (첫 문자) : 대문자로 변경 toUpperCase()

        - count > 0 : 소문자로 변경 toLowerCase()

    ⓑ 알파벳이 아님

        - 그대로 

    count는 1 증가함

 

2) 주의 사항(알고리즘 구현 시 놓쳤던 사항)

- 첫 문자만 대문자로 바꾼다고 JadenCase가 보장X : 그 외 알파벳이 대문자인 상태일 수 있음

- 공백을 제외한 문자만을 대상으로 하고 중간에 공백 넣기 X

: 단어들 사이에 공백이 2개 이상 OR 문장 앞뒤에 공백 존재 가능성

 

 

3. 참고 사항

1) 다른 풀이

(1) 글자 지정 : split("")로 모든 글자를 배열에 넣기

(2) 공백, 첫 글자 판별 : 숫자에 대한 toUpperCase(), toLowerCase()도 오류X 내 풀이에서 불필요한 과정

    - boolean 변수에 따라 toUpperCase(), toLowerCase() 적용 (공백일 때를 이용해 bool값 변화)

    - 전부 toLowerCase() 적용 후 첫 문자에 대해서만 toUpperCase() 적용

(3) char 사용 : StringBuffer에 character append + Character.toUpperCase(), Character.toLowerCase() 이용

 

2) 기억해야될 것

- toUpperCase(), toLowerCase()

- 알고리즘 코딩 전 여러 예외 case 미리 생각하는 시간 가지기!

 

 

4. 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        int count = 0;
        for(int i = 0; i < s.length(); i++){
            char target = s.charAt(i);
            String result = " ";
            if(target == ' '){
                count = 0;
                result = " ";
            }
            else{
                if((int)target >= 65 || (int)target <= 122){
                    if(count == 0)  result = (Character.toString(target)).toUpperCase();
                    else result = (Character.toString(target)).toLowerCase();
                }
                else    result = (Character.toString(target));
                count++;
            }
            answer += result;
        }
        return answer;
    }
}
Comments