ㅇ 1차풀이
public static String solution(String s) {
StringBuilder result = new StringBuilder();
String answer = "";
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
result.append(Character.toLowerCase(c));
}else {
result.append(c);
}
}
String convertS = result.toString();
String[] S = convertS.split(" ");
for(int i = 0; i < S.length; i++) {
if(Character.isLetter(S[i].charAt(0))){
S[i]= Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
}
answer += S[i] + " ";
}
return answer.substring(0,answer.length()-1);
}
}
답은 나온다. 근데 테스트케이스가 조금만 복잡해지면 런타임 에러가 난다. 내가봐도 코드가 드릅다.
ㅇ 2차 시도
public static String solution(String s) {
StringBuilder result = new StringBuilder();
String answer = "";
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
result.append(Character.toLowerCase(c));
}else {
result.append(c);
}
}
String convertS = result.toString();
String[] S = convertS.split(" ");
for(int i = 0; i < S.length; i++) {
//이부분이 수정됨.
if(!S[i].isEmpty() && Character.isLetter(S[i].charAt(0))){
S[i]= Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
}
answer += S[i] + " ";
}
return answer.substring(0,answer.length()-1);
}
주석 처리 한 부분이 수정되었다. 난 참 편협했다. 난 모든 케이스가 " "스페이스 한번만으로 띄어져있을 줄 알았다. 만약 두번이상 띄어져있으면 StringIndexOutOfBoundsException이 나온다.
그래서 빈부분일때라는 조건을 넣어주었다.
하지만...!!!
이게 무엇? 넌 누구냐.
좀 찾아보니," for the what 1what "이 주어지면 , " For The What 1what " 이 되야한다. 즉 마지막 공백처리도 해줘야하는것이다.
으아아아 멘탈.
ㅇ 마지막 도전
public String solution(String s) {
StringBuilder result = new StringBuilder();
String answer = "";
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
result.append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
String convertS = result.toString();
String[] S = convertS.split(" ", -1); // 마지막 공백 유지
for (int i = 0; i < S.length; i++) {
if (!S[i].isEmpty() && Character.isLetter(S[i].charAt(0))) {
S[i] = Character.toUpperCase(S[i].charAt(0)) + S[i].substring(1);
}
answer += S[i] + " ";
}
return answer.substring(0, answer.length() - 1);
}
끝!