문제 설명
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);
}
}