https://programmers.co.kr/learn/courses/30/lessons/12926

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr


풀이 과정

ord()로 문자의 아스키 코드를 감지할 수 있고, chr()로 아스키코드를 문자로 바꿀 수 있다.

 

A-Z의 문자는 아스키 코드로 65-90에 대응되고, a-z는 97-122에 대응됨을 이용하여 아스키 코드가 90, 122를 넘어가면 26을 빼줘서 처음으로 돌아가게끔 해주었다. n이 큰 수가 들어오는 조건이였다면 나머지 연산으로 문제를 해결해야 했겠지만 25까지 들어오기 때문에 그냥 범위를 넘어갈시 25를 빼주는 방법으로 문제를 해결할 수 있다.


소스 코드

def solution(s, n):
    answer = ''
    for letter in s:
        if letter == ' ':
            answer += ' '
            continue
        temp = ord(letter) + n
        if 'A' <= letter <= 'Z':  # letter.isupper()로도 판단 가능
            if temp > 90:
                temp -= 26
        else:  # letter.islower()로도 판단 가능
            if temp > 122:
                temp -= 26
        answer += chr(temp)

    return answer

+ Recent posts