코딩테스트 연습 > 연습문제 > 이상한 문자 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12930
한 개 이상 단어로 구성된 문자열 s가 주어 질 때, 각 단어의 짝수번재 위치는 대문자, 홀수번째 알파벳은 소문자로 바꾼 문자열을 return하라.

문자열에서 각 단어를 split 하여 각 단어를 순회하며 짝수 index는 대문자, 홀수 index는 소문자로 변경한다. 그리고 변경 후엔 StringBuilder 에 append 한다.
한 단어가 끝난 뒤에는 원래 상태를 유지하기 위해 공백 문자를 더해준다.(맨 마지막을 제외하기 위해 w < words.length - 1 조건 추가)
import java.util.*;
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
String[] words = s.split(" ", -1); // 연속된 공백 유지
for (int w = 0; w < words.length; w++) {
for (int i = 0; i < words[w].length(); i++) {
if (i % 2 == 0) {
sb.append(Character.toUpperCase(words[w].charAt(i)));
} else {
sb.append(Character.toLowerCase(words[w].charAt(i)));
}
}
// 마지막 단어 뒤에는 공백 추가 X
if (w < words.length - 1) {
sb.append(" ");
}
}
return sb.toString();
}
}
Review
공백 문자를 만날 때 마다 index를 초기화할 수 있다.
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
int index = 0;
for(int i =0; i<s.length(); i++){
char c = s.charAt(i);
if(c == ' '){
sb.append(c);
index = 0;
}else{
if(index%2 == 0){
sb.append(Character.toUpperCase(c));
}else{
sb.append(Character.toLowerCase(c));
}
index++;
}
}
return sb.toString();
}
}
공백 유지를 위해 split에선 split(" ", -1) 처럼 -1을 넣어야한다.
String.toUpperCase 뿐만 아니라
Character.toUpperCase 도 있다.