프로그래머스 Lv.1 : 시저 암호★

zeroequaltwo·2022년 11월 18일
0

코딩테스트

목록 보기
33/69

문제

프로그래머스 문제

내 풀이

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('');
}
profile
나로 인해 0=2가 성립한다.

0개의 댓글