class Solution {
public String solution(String s) {
String answer = "";
String[] strings = s.split(" ", -1);
for (int i = 0; i < strings.length; i++) {
char[] tmp = strings[i].toCharArray();
for (int j = 0; j < tmp.length; j += 2) {
if ('a' <= tmp[j] && tmp[j] <= 'z') tmp[j] -= 32;
}
for (int j = 1; j < tmp.length; j += 2) {
if ('A' <= tmp[j] && tmp[j] <= 'Z') tmp[j] += 32;
}
strings[i] = new String(tmp);
}
StringBuilder sb = new StringBuilder(strings[0]);
for (int i = 1; i < strings.length; i++) {
sb.append(" ");
sb.append(strings[i]);
}
answer = sb.toString();
return answer;
}
}
split의 사용법에 대해서 더 배울 수 있었던 문제였다.
s.split(" ")을 하면 "Hello "와 같이 뒤에 공백이 남아있는 경우 공백을 무시해버리지만
s.split(" ", -1)처럼 인자값으로 음수를 같이 넘겨주면 무시하는값 없이 모든 구분값을 나눠서 준다.
class Solution {
public String solution(String s) {
String answer = "";
String[] strings = s.split(" ", -1);
for (int i = 0; i < strings.length; i++) {
char[] tmp = strings[i].toCharArray();
for (int j = 0; j < tmp.length; j += 2) tmp[j] = Character.toUpperCase(tmp[j]);
for (int j = 1; j < tmp.length; j += 2) tmp[j] = Character.toLowerCase(tmp[j]);
strings[i] = new String(tmp);
}
StringBuilder sb = new StringBuilder(strings[0]);
for (int i = 1; i < strings.length; i++) {
sb.append(" ");
sb.append(strings[i]);
}
answer = sb.toString();
return answer;
}
}
자바에서 toUpperCase(), toLowerCase()가 String 클래스에만 있는줄 알았는데
Character에도 있다는걸 알고 수정했다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges