2차 공부/알고리즘

시저암호

공대탈출 2024. 6. 4. 14:34



작성한 코드

function solution(s, n) {
    let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    let lower = 'abcdefghijklmnopqrstuvwxyz'
    var answer = '';
    
    for (let i = 0; i<s.length; i++) {
        let target = s[i]
        if (target === ' ') {
            answer += ' '
            continue;
        }
        let targetArr = upper.includes(target) ? upper : lower;
        let targetIndex = targetArr.indexOf(target)+n
        if (targetIndex >= targetArr.length) targetIndex -= targetArr.length
        answer += targetArr[targetIndex]
    }
    
    return answer;
}

 

원래 split()을 사용하여 배열화 시킨 뒤 진행하려 하였는데, 알파벳의 순서에 따라 바꿔야 하는점과 사이사이에 띄어쓰기가 포함될 경우를 예외처리 하기 어려워 문자열 연산으로 풀이하였따.

 

continue;를 쓰지 않은 경우 문제가 생기기도 하였다. continue를 쓰지 않으면 if문이 끝난 뒤 아래에 있는 문장들이 실행되어 쓸모없는 데이터가 들어갈 수 있어 if문에 합당하다면 해당 반복을 멈추고 다음 반복으로 넘어가야한다.

또는 else if문을 사용해도 좋을 것 같다.

'2차 공부 > 알고리즘' 카테고리의 다른 글

카드 뭉치  (0) 2024.06.10
콜라문제  (0) 2024.06.05
문자열 다루기 기본  (0) 2024.05.31
자연수 뒤집기  (0) 2024.05.28
배열의 평균값  (0) 2024.05.27