CodingSpace

프로그래머스#38(Lv.1)_시저 암호 본문

프로그래머스/Level1

프로그래머스#38(Lv.1)_시저 암호

개발자_조이킴 2021. 10. 15. 02:32

시저 암호

다른 분들이 하신것 보고 배우고 또 배우자! (삼항연산자, 문자열 처리에 익숙해지기!)

 

※ 시저 암호: 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 함

 

그래도 포기하지말고 계속해서 공부하자!

화이팅:)

 

입출력 예시


// 프로그래머스 - Lv.1_시저 암호

function solution(s, n) {
    
    let arrS = s.split("")
    let result = []
    
    let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    // arrUpper.length = 26, 마지막 idx = 25
    let arrUpper = upper.split("")
    
    let lower = upper.toLowerCase()
    // arrLower.length = 26, 마지막 idx = 25
    let arrLower = lower.split("")
    
    for(let i = 0; i < arrS.length; i++) {
        
        // 공백이면
        if(arrS[i] === " ") {
            result.push(arrS[i])
        } 
        // 소문자일 경우
        else if(arrLower.includes(arrS[i])) {
            let lowerIdx = arrLower.indexOf(arrS[i])
            let moveIdx = lowerIdx + n

            if(moveIdx > arrLower.length - 1) {
                result.push(arrLower[moveIdx - arrLower.length])
            } else {
                result.push(arrLower[moveIdx])
            }
        }
        // 대문자일 경우
        else {
            let upperIdx = arrUpper.indexOf(arrS[i])
            let moveIdx = upperIdx + n

            if(moveIdx > arrUpper.length - 1) {
                result.push(arrUpper[moveIdx - arrUpper.length])
            } else {
                result.push(arrUpper[moveIdx])
            }
        }
        
    }    
    
    return result.join("")
}

<다른분의 solution>

 

 

Comments