문제
프로그래머스 문제
내 풀이
function solution(s, n) {
const original = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let pushed = original.slice(n).concat(original.slice(0, n));
pushed = pushed.concat(pushed);
return s.split("").map((alphabet) => alphabet === " " ? " " : alphabet === alphabet.toUpperCase() ? pushed[original.indexOf(alphabet.toUpperCase())] : pushed.toLowerCase()[original.indexOf(alphabet.toUpperCase())]).join("");
}
개선점
- 풀면서도 참 찝찝했다. 어찌저찌 억지로 풀어내긴 했는데 분명 남들은 이것보다 더 획기적인 걸 했을 거라 빨리 엉망으로라도 풀어버리고 남의 것을 보자고 생각했다.
- 아래 거는 나랑 아이디어는 거의 같고 for문으로 적어내신 분 거
function solution(s, n) {
var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lower = "abcdefghijklmnopqrstuvwxyz";
var answer= '';
for(var i =0; i <s.length; i++){
var text = s[i];
if(text == ' ') {
answer += ' ';
continue;
}
var textArr = upper.includes(text) ? upper : lower;
var index = textArr.indexOf(text)+n;
if(index >= textArr.length) index -= textArr.length;
answer += textArr[index];
}
return answer;
}
- 아래는 n <= 25라는 조건을 잘 살려서 푸신 분 거다. 뒤에 공백도 숫자 맞춰서 넣은 게 좋았다.
function solution(s, n) {
var chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY "
return s.split('').map(e => chars[chars.indexOf(e)+n]).join('');
}