
문자열을 공백을 기준으로 배열로 나눈다. 그러면 단어의 수 길이의 문자열 배열이 만들어진다.
문자열을 돌면서 각 문자열 안에서 짝수 번째 인덱스의 값은 대문자로 변경하고 홀수 번째 인덱스의 값은 소문자로 변경한다.
배열을 다시 문자열로 합쳐서 반환한다.
class Solution {
public String solution(String s) {
String[] strArr = s.split(" ");
for (int i = 0; i < strArr.length; i ++) {
String str = "";
for (int j = 0; j < strArr[i].length(); j ++) {
char ch = strArr[i].charAt(j);
if (j % 2 == 0) {
str += Character.toUpperCase(ch);
}
else {
str += Character.toLowerCase(ch);
}
}
strArr[i] = str;
}
return String.join(" ", strArr);
}
}
input: " TRy HElLo WORLD "
output: " TrY HeLlO WoRlD "
위의 테스트케이스에서 오류가 발생한다.

마지막에 공백이 나올 때도 체크해주기 위하여 아래와 같이 로직을 구상했다.
s를 공백 기준으로 배열로 나누지 않고 s의 모든 index를 돈다.
인덱스를 세는 수를 checkIndex라고 하고 0으로 초기화한다.
문자가 공백이 아닌 경우에 checkIndex가 짝수면 대문자로 변경하여 저장한다.
문자가 공백이 아닌 경우에 checkIndex가 홀수면 소문자로 변경하여 저장한다.
문자가 공백인 경우에는 checkIndex를 변경하고 공백을 저장한다.
class Solution {
public String solution(String s) {
String answer = "";
int checkIndex = 0;
for (int i = 0; i < s.length(); i ++) {
char ch = s.charAt(i);
if (ch == ' ') {
answer += " ";
checkIndex = 0;
}
else {
if (checkIndex % 2 == 0) {
answer += Character.toUpperCase(ch);
}
else {
answer += Character.toLowerCase(ch);
}
checkIndex ++;
}
}
return answer;
}
}
