https://programmers.co.kr/learn/courses/30/lessons/12930?language=java
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
케이스에서 "heLLo WoRLd " 같은 케이스가 있는지 몰라서 자꾸 실패했다. split(" ")은 뒤의 공백들을 지워버리고 [hello, world] 이런 결과 값을 준다. split(" ", -1)을 해주면 길이가 0인 문자열도 배열의 원소로 포함한다. [hello, world, , , , ]
public class Solution {
public String solution(String s) {
// -1 포함하면 길이가 0인 문자열도 무시하지 않고 포함
String[] arr = s.split(" ", -1);
StringBuilder sb = new StringBuilder();
for (String word : arr) {
for (int i = 0; i < word.length(); i++) {
if (i % 2 == 0)
sb.append((Character.isLowerCase(word.charAt(i))) ? (char) (word.charAt(i) - 32) : word.charAt(i));
else
sb.append((Character.isUpperCase(word.charAt(i))) ? (char) (word.charAt(i) + 32) : word.charAt(i));
}
// 단어 사이에 공백 넣기
sb.append(" ");
}
// 마지막 단어 뒤에도 " " 공백 붙어있어서 제거해주기
return sb.deleteCharAt(sb.length()-1).toString();
}
}