프로그래머스 JadenCase 문자열 만들기 in Java

7243 단어 algorithmalgorithm

문제

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

제한 조건
s는 길이 1 이상인 문자열입니다.
s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다.

접근

원시적으로 접근하여 구현하였다. char array로 바꾸어서 하나씩 탐색해가며 문자가 시작지점(단어의 시작지점) 인지는 isWordStart 라는 boolean을 통하여 판단하였고 문자의 대소문자 구별은 아스키 코드를 사용하여 풀이하였다.

class Solution {
    public String solution(String s) {
       char[] arr = s.toCharArray();
       // 첫 번째 문자는 무조건 시작지점
       boolean isWordStart = true;
       for(int i=0; i<arr.length; i++){
       // 문자가 소문자이고 시작지점인지
           if((int)arr[i] >= 97 && (int)arr[i] <= 122 && isWordStart){
           // 대문자로 바꿔주고 시작지점 표시를 false로 바꿔준다.
               arr[i] = (char)((int)arr[i] - 32);
               isWordStart = false;
           }
           // 문자가 시작지점이 아닌데 대문자라면
           else if((int)arr[i] >= 65 && (int)arr[i] <= 91 && !isWordStart){
           //소문자로 바꿔준다.
               arr[i] = (char)((int)arr[i] + 32);
           }
           // 공백의 아스키코드는 32이다. 이 이후에 나오는 글자는 시작지점이다.
           else if((int)arr[i] == 32){
                isWordStart = true;
           }
           // 알파벳 문자가 아닌 경우엔 아무런 행동도 취하지 않지만 만약 시작지점이었던 경우가 생길 수 있으므로 시작지점을 false로 바꿔준다.
           else{
                isWordStart = false;
           }
       }
        
       return String.valueOf(arr);
    }
}

좋은 웹페이지 즐겨찾기