작성한 코드
function solution(s, n) {
let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
let lower = 'abcdefghijklmnopqrstuvwxyz'
var answer = '';
for (let i = 0; i<s.length; i++) {
let target = s[i]
if (target === ' ') {
answer += ' '
continue;
}
let targetArr = upper.includes(target) ? upper : lower;
let targetIndex = targetArr.indexOf(target)+n
if (targetIndex >= targetArr.length) targetIndex -= targetArr.length
answer += targetArr[targetIndex]
}
return answer;
}
원래 split()을 사용하여 배열화 시킨 뒤 진행하려 하였는데, 알파벳의 순서에 따라 바꿔야 하는점과 사이사이에 띄어쓰기가 포함될 경우를 예외처리 하기 어려워 문자열 연산으로 풀이하였따.
continue;를 쓰지 않은 경우 문제가 생기기도 하였다. continue를 쓰지 않으면 if문이 끝난 뒤 아래에 있는 문장들이 실행되어 쓸모없는 데이터가 들어갈 수 있어 if문에 합당하다면 해당 반복을 멈추고 다음 반복으로 넘어가야한다.
또는 else if문을 사용해도 좋을 것 같다.