문제 소개
풀이
public class Pr12930 {
public String solution(String s) {
StringBuilder answer = new StringBuilder();
int count = 0;
for(char ch: s.toUpperCase().toCharArray()) {
if(ch == ' ') {
answer.append(ch);
count = 0;
} else if(count % 2 != 0) {
answer.append((char)(ch + 32));
count ++;
} else {
answer.append(ch);
count ++;
}
}
return answer.toString();
}
public static void main(String[] args) {
System.out.println(solution("try hello world"));
}
}
- String 전체를 대문자로 변환 후 각 단어의 홀수번째 숫자만 소문자로 변경해주었다.
- 가장 성가셨던 부분은 띄어쓰기 또한 고려해서 변환해주어야 한다는 점이었다.
- 문자를 모두 살펴보며 3가지의 경우마다 다른 작업을 수행해준다.
- 문자가 ‘ ‘ 와 같이 띄어쓰기라면 StringBuilder에 추가 해주고 단어의 시작을 설정하기 위해 count를 0으로 설정한다.
- 문자가 ‘ ‘가 아니고 count가 홀수라면 32를 더해 소문자로 변경하여 StringBuilder에 추가해준다.
- 대문자는 65(A) ~ 90(Z)
- 소문자는 97(a) ~ 122(z)
- 문자가 ‘ ‘ 가 아니고 count도 짝수라면 대문자로 두기 위해 그냥 StringBuilder에 추가해준다.
- 이번 코드에서도 ASCII를 이용한 계산을 이용하기 위해 위처럼 짜본 것이지, 아래처럼 간단히 작성할 수도 있다.
public static String solution(String s) {
StringBuilder answer = new StringBuilder();
int count = 0;
String[] array = s.toUpperCase().split("");
for(String letter : array) {
count = letter.equals(" ") ? 0 : count + 1;
answer.append(count%2 == 0 ? letter.toLowerCase() : letter);
}
return answer.toString();
}