본문 바로가기
코딩테스트

[파이썬] 시저 암호 [CODING TEST #35]

by ALTERww 2022. 8. 2.
320x100

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

 

 

리스트를 쓰지 않고, 아스키 코드를 이용해서 풀어 보았다.

  • chr(ascii) : ascii에 대응하는 alpha를 문자열로 반환
  • ord(alpha) : alpha에 대응하는 아스키 코드를 문자열로 반환

아스키 코드는 소문자 a~z, 그리고 대문자 A~Z까지 순서대로 배치되어 있으니

케이스를 나누어 'A'와 Alpha까지의 차이에다가 n을 더한 만큼 아스키 코드로 'A'로부터 이동한 뒤, 문자로 반환시킨다.

공백은 공백으로 나와야 하는데, 공백에 대응하는 아스키 코드가 존재하므로 코드에 공백인 경우는 pass하도록 구현해야 한다.

 

def solution(s, n):
    answer = ''
    for alpha in s:
        if alpha.isalpha():
            if alpha.islower(): # a 기준, alpha와의 차이 + n만큼 플러스
                answer += chr(ord('a') + (ord(alpha) - ord('a') + n)%26)
            else: # A 기준, alpha와의 차이 + n만큼 플러스
                answer += chr(ord('A') + (ord(alpha) - ord('A') + n)%26)
        else:
            answer += ' '
    return answer

댓글