반응형
CODE
class Solution {
public String solution(String s, int n) {
StringBuffer answer = new StringBuffer();
boolean isUpper = false;
char alphabet = ' ';
int len = 0;
for(int i = 0; i < s.length(); i++) {
len = n;
if(s.charAt(i) == ' ') {
answer.append(" ");
continue;
}
else if(Character.isUpperCase(s.charAt(i))) {
alphabet = (char)(s.charAt(i) + len);
isUpper = true;
}
else {
alphabet = (char)(s.charAt(i) + len);
isUpper = false;
}
if( (isUpper && alphabet > 'Z') || (!isUpper && alphabet > 'z') ) {
if(isUpper) {
alphabet = (char)('A' + (len = (n+s.charAt(i))-'Z') -1);
}
else {
alphabet = (char)('a' + (len = (n+s.charAt(i))-'z') - 1);
}
}
answer.append(alphabet);
}
return answer.toString();
}
}
처음 제출했었을 때는 테스트 9번 빼고 다 실패가 떴었다. 보고 진심 헛웃음 남..
기존에 제시된 테스트 케이스는 모두 통과됐었는데 제출하니 이상해서 테스트 케이스를 더 찾아봤다.
근데 신기하게도 이 두 테스트 케이스를 추가해도 통과가 떴다. 프로그래머스 오류인가 싶어 내 코드를 주석처리하고 인터넷에 떠도는 정답 코드도 돌려봤는데 신기하게 통과가 떠서 후다닥 실행 중지를 눌렀다. ㅎㅎㅎㅎ 역시 내가 문제였다.
그래서 코드를 천천히 다시 살펴봤는데 이럴수가 세상에 마상에 매개변수 n으로 넘어온 값을 연산처리 후 저장해버려서 실패가 뜨는 거였다. 데이터를 소중하고 안전하게 다뤄야겠다. n 값을 len 변수에 담고 연산처리하니 제대로 통과되었다!
실행 결과
반응형