문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
class Solution {
public String solution(String s) {
String answer = "";
s = s.toLowerCase();
String[] arr = s.split(" ", -1);
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length(); j++){
String[] arr2 = arr[i].split("");
if(j % 2 == 0){
arr2[j] = arr2[j].toUpperCase();
}
answer += arr2[j];
}
if(i == arr.length-1){
break;
}else{
answer += " ";
}
}
return answer;
}
}
우선 입력받은 문자열 s를 모두 toLowerCase
를 사용하여 모두 소문자로 변경해 주었다. 혹시라도 대문자가 섞여있으면 결과가 엉망으로 나올 것이기 때문에.. 그 후 arr배열에 문자열 s 를 공백을 기준으로 나누어 주었다. 그러면 arr 배열의 원소는 입력받은 문자열의 단어 하나하나가 된다.
그 다음에 for문을 사용하여 arr의 단어를 arr2에 문자 하나씩 담아준다. 그리고 j가 0으로 나누어 떨어질 때, 즉 짝수번째 문자는 toUpperCase
를 사용해 대문자로 만들어 다시 arr2[j]에 담아준다.
그리고 변경한 arr[j]를 각각 answer에 담은 후, for
문을 한 바퀴 돌 때마다 answer에 공백을 더하고 만약 i가 arr의 길이보다 1 작을 때, 즉 for
문의 마지막에는 공백 더해주는 과정을 생략하고 answer를 반환한다.
처음에는
String[] arr = s.split(" ", -1);
이 부분을
String[] arr = s.split(" ");
이렇게 작성했었다.
그렇게 하니 몇 개의 테스트 케이스를 통과하지 못하였는데, 찾아보니 테스트 케이스 중에 "try hello world " 처럼 뒤에도 공백이 들어가는 경우 내 코드에서 문제가 생기는 것이란다. 그래서 split("", -1)
를 해 주면 무사히 테스트케이스를 통과 할 수 있다.