풀이 과정
- 알파벳 문자열 만들기:
ABCD..Z
- 주어진 문자열을 배열로 만들고 각 문자에 대해 반복:
map()
- 각 문자의 인덱스 찾기:
indexOf()
이때 대소문자 구분
- 인덱스가
-1
이면 그대로 반환
- 인덱스가 있으면
n
만큼 뒤에 있는 문자 반환
이때 대소문자 구분
- 다시 문자열로 만들기:
join()
코드
function solution(s, n) {
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const len = alphabet.length;
return [...s]
.map((c) => {
const upper = c.toUpperCase();
const i = alphabet.indexOf(upper);
if (i === -1) return c;
const changed = alphabet[(i + n) % alphabet.length];
return c === upper ? changed : changed.toLowerCase();
})
.join('');
}