DEVLOG

프로그래머스 알고리즘#28 - 시저 암호 본문

dev log/algorithm

프로그래머스 알고리즘#28 - 시저 암호

meroriiDev 2021. 1. 6. 14:44
728x90
반응형

<문제>

 

<풀이>

접근법을 생각하며 문제를 해결한 것도 재밌었지만 

수정수정수정을 통해 더 나은 코드를 만드는 과정이 꽤나 재밌었던 문제였다.

function solution(s, n) {
    let idx = 0;
    let alpha = 'abcdefghijklmnopqrstuvwxyz';
    let arrLow = alpha.split('');
    let arrUp = alpha.toUpperCase().split('');
    
    return s.split('').map((e)=>{
        if(e === ' ') return ' ';
        idx = arrUp.indexOf(e.toUpperCase());
        if(e === e.toUpperCase()){
            if(idx + n > arrUp.length-1) return arrUp[idx+n-arrUp.length];
            return arrUp[idx+n];            
        }else{
            if(idx + n > arrLow.length-1) return arrLow[idx+n-arrUp.length];
            return arrLow[idx+n];            
        }
    }).join('');
}

초기 코드는 굉장히 복잡해보이고 똑같은 것들을 반복하여 지저분해보였다.

 

function solution(s, n) {
    let idx = 0;
    let arr = [];
    let alpha = 'abcdefghijklmnopqrstuvwxyz';
    
    return s.split('').map((e)=>{
        if(e === ' ') return ' ';
        arr = (e === e.toUpperCase()) ? alpha.toUpperCase().split('') : alpha.split('');
        idx = arr.indexOf(e);
        if(idx + n > arr.length-1) return arr[idx+n-arr.length];
        return arr[idx+n];
    }).join('');
}

최종완성코드

각 상황에 대한 조건문을 사용해서 같은 문장을 반복하던 코드를

조건에 맞게 배열을 수정함으로써 깔끔하게 코드를 수정했다.

728x90
반응형
Comments