DEVLOG
프로그래머스 알고리즘#28 - 시저 암호 본문
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
반응형
'dev log > algorithm' 카테고리의 다른 글
프로그래머스 알고리즘 #30 - 약수의 합 (0) | 2021.01.19 |
---|---|
프로그래머스 알고리즘 #29 - 크레인 인형뽑기 게임 (0) | 2021.01.08 |
프로그래머스 알고리즘#27 - 제일 작은 수 제거하기 (0) | 2021.01.06 |
프로그래머스 알고리즘#26 - 자릿수 더하기 (0) | 2020.12.22 |
프로그래머스 알고리즘#25 - 이상한 문자 만들기 (0) | 2020.12.22 |
Comments