[프로그래머스 / Python] 시저 암호

 

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

 

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

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

programmers.co.kr

이 문제는 알파벳에 대한 아스키 값을 이용하여 문제를 해결할 수 있다. 알파벳을 주어진 숫자대로 밀다가 z를 넘어가게 되면 다시 a로 넘어가야하기떄문에 알파벳이 대, 소문자 각각 26개 있으므로 나머지 연산을 이용하여 구현할 수 있다.

 

문제를 풀기위해 필요한 함수들을 정리해보자.

 

1. 대,소문자 판별

a = "I Love Python"

print a.isupper()

#######################

a = "I LOVE PYTHON"

print a.isupper()

#######################

a = "I Love Python"

print a.islower()

#######################

a = "i love python"

print a.islower()

👉result

False # 문자열 전체가 대문자인지 판별함.
True  
False # 문자열 전체가 소문자인지 판별함.
True  

2. 아스키코드 변환 함수

print(ord('a'))
print(ord('z'))

print(chr(97))
print(chr(122))

👉result

97
122
a
z

 

이 함수들을 조합하여 문제를 풀 수 있다.

 

내 풀이

def solution(s, n):
    answer = ''

    for i in s:
        if i == ' ':
            answer += i
            continue
        if i.isupper(): 
            temp = (ord(i) - ord('A') + n) % 26
            answer += chr(temp + ord('A'))
        
        elif i.islower(): 
            temp = (ord(i) - ord('a') + n) % 26
            answer += chr(temp + ord('a'))

        
    return answer

댓글

Designed by JB FACTORY