본문 바로가기

Algorithm

시저 암호 / 프로그래머스

 

시저 암호

 

처음 오답

def solution(s, n):
    answer = ""
    for i in s:
        if i == " ":
            answer += " "
        elif i == "z" or i == "Z":
            answer += chr(ord(i) - 26 + n)
        else:
            answer += chr(ord(i) + n)
    return answer

 

  • z만 처리해 줄 것이 아니라 나머지 문자도 범위를 초과해야 하는 경우 처리를 해 줘야 했음

 

정답

  • ord() : 아스키코드값으로 변경해줌 -> 파이썬은 c언어와 다르게 명시적으로 함수를 사용해야 함
  • chr() : 아스키코드를 문자로 변경
def solution(s, n):
    answer = ""
    for i in s:
        if i == " ":
            answer += " "
        elif i.islower():
            answer += chr((ord(i) - ord('a') + n) % 26 + ord('a'))
        elif i.isupper():
            answer += chr((ord(i) - ord('A') + n) % 26 + ord('A'))
    return answer