def solution(s, n):
word = list(s)
for i in range(len(word)):
if word[i].islower():
word[i] = chr((ord(word[i]) - ord('a') + n) %26 +ord('a'))
elif word[i].isupper():
word[i] = chr((ord(word[i]) - ord('A') + n) %26 +ord('A')).upper()
return ("".join(word))
'''
ord(문자) = 문자-> 아스키 코드로 변환
ord('a') 를 빼주는 이유는 둘의 값의 차이를 알기위해서
+n을해서 밀어낼 수를 정하고 % 26은 알파벳수만큼 나눠서
나머지를 구하고
그 값에 ord('a')를 더해서 아스키 값을 만들고
그걸 다시 chr로 아스키 -> 문자로 바꾼다
"".join(문자열리스트) -> 리스트를 합치고싶을 때 사용
'''