우리가 아는 알파벳 순서대로 일정한 거리만큼 밀 것이기 때문에 먼저 알파벳 대문자 소문자 집합을 순서에 맞게 만들어준다.
s 를 돌아보면서 공백이 아닐 경우 각 알파벳 단위로 upper 인지 lower 인지 검사한다. text 가 대문자일 경우 upper 의 배열을 사용하고 소문자일 경우 lower 의 배열을 사용한다. 각 알파벳의 위치를 구하고 n 을 더해 일정한 거리만큼 밀렸을 때의 위치인 index 를 구한다. 만약 index 가 textArr 즉 알파벳 배열 보다 길면 index 에서 textArr 를 뺀 만큼이 index 가 된다. ( z 일 때 a 가 되는 경우)
function solution(s, n) {
let answer = '';
// 알파벳 필요
// 대소문자 구분
let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let lower = 'abcdefghijklmnopqrstuvwxyz';
// 공백은 아무리 밀어도 공백
for (let i = 0; i < s.length; i++) {
let text = s[i];
if (text === ' ') {
answer += ' ';
continue
}
let textArr = upper.includes(text) ? upper : lower;
let index = textArr.indexOf(text)+n;
if (index >= textArr.length) {
index -= textArr.length
}
answer += textArr[index];
}
return answer;
}
근데 한 번 틀림... 왜 틀렸게
알파벳 노래 부르면서 upper lower 만들었는데 lnmop 로 써서... (lmnop 입니다) 여기 맨날 엘엠엔오피 하고 뭉뚱그려서 불러서 헷갈렸어 애기 때도...
'Algorithm 뽀개기' 카테고리의 다른 글
[백준] 10820 문자열 분석 (Python) (1) | 2024.07.03 |
---|---|
[백준] 17298 오큰수 (Python) (0) | 2024.07.01 |
[백준] 1874 스택 수열 (Python) (0) | 2024.06.28 |
[Programmers] Lv.2 다음 큰 숫자 (JavaScript) (3) | 2024.05.03 |
[프로그래머스] 자릿수 더하기 (JavaScript) (0) | 2024.03.27 |