시저 암호화가 완료된 값을 return 하라.
chr(n)
: 유니코드 숫자 값을 입력받아 그 코드에 해당하는 문자를 리턴하는 함수chr(97) = a
ord(s)
: 문자를 입력받아 해당 문자에 해당하는 유니코드 숫자를 리턴하는 함수ord("h") = 104
def solution(s, n):
answer = ""
for alp in s:
if alp == " ":
answer += " "
elif alp.islower():
answer += chr((ord(alp) - ord('a`) + n) % 26 + ord('a'))
elif alp.isupper():
answer += chr((ord(alp)-ord('A') + n) % 26 + ord('A'))
return answer
- 핵심코드:
chr((ord(alp) - ord('a') + n) % 26 + ord('a'))
ord('a')
: 알파벳 a의 아스키 숫자는 97이다. "알파벳 몇 번째 숫자"를 구하려면 'a'를 기준으로 삼아야 한다.(ord(alp) - ord('a') + n)
: alp가 알파벳 몇 번째 숫자인지 수하고, 거기에 n만큼 구하면 우리가 찾아야 할 값의 알파벳 숫자를 알 수 있다.((ord(alp) - ord('a') + n) % 26
: 어떤 값이 26이 아닌 이상 26을 나눠봐야 몫은 0, 나머지는 그해당 값이 그대로 나온다. 따라서 알파벳 마지막(26번째) z 가 나오면 다시 1인 a로 넘어가게 만들어주는 역할을 한다.chr((ord(alp) - ord('a') + n) % 26 + ord('a'))
: chr() 함수를 통해 해당 아스키 숫자를 문자열로 바꿔준다.