코딩테스트
이상한 문자 만들기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프...
programmers.co.kr
제출한 코드
class Solution {
public String solution(String s) {
StringBuilder answer = new StringBuilder();
int idx = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
answer.append(c);
idx = 0;
} else {
if (idx % 2 == 0) {
answer.append(Character.toUpperCase(c));
} else {
answer.append(Character.toLowerCase(c));
}
idx++;
}
}
return answer.toString();
}
}

제한 사항을 보고, 먼저 각 단어를 기준으로 배열에 저장한 다음에 각 단어마다 인덱스를 기준으로 대소문자를 요구사항에 따라서 변환했다. 그리고 각 단어는 [입출력 예]처럼 공백 한 개를 두었는데 계속 문제에 통과하지 못했다. 그 이유는 공백을 없애는 것이 아니라 공백을 포함한 채로 반환해야 하는 문제이다.
위의 [입출력 예]와 다르게 "try hello world"이면 "TrY HeLlO WoRlD"가 정답이다.
내가 생각한 정답은 "TrY HeLlO WoRlD"인 줄 알아서 계속 오답처리가 됐다.
Input에서는 한 개 이상의 공백이 올 수 있다는 사실은 명확히 잘 알고 있다. 근데,Output에서는 별도로 공백에 대한 기준이 명시되어 있지 않기 때문에 오랫동안 헤매고 있었다. 즉, 문제의 핵심은 각 단어 내에서 짝수번째, 홀수번째 알파벳을 각각 대문자와 소문자로 바꾸는 것이고, 공백은 단어 구분자로 사용된다는 점이라고 생각한다. 어쩌면 나의 실수처럼 Output에서도 공백을 포함하느냐 안하느냐가 가장 큰 관건이지 않을까 생각이 든다.
댓글