https://programmers.co.kr/learn/courses/30/lessons/12926
다음 문제는, 문자열과 숫자가 주어질 때 문자열에 입력된 숫자만큼 떨어진 문자를 출력하는 문제입니다.
아스키코드를 이용해 범위를 나눠 풀었습니다.
def solution(s, n):
answer = ''
for i in range(len(s)):
num = ord(s[i]) + n
if s[i] == ' ':
answer += ' '
elif ('a' <= s[i] and s[i] <= 'z') and num < 97:
answer += chr(num + 26)
elif ('a' <= s[i] and s[i] <= 'z') and num > 122:
answer += chr(num - 26)
elif ('A' <= s[i] and s[i] <= 'Z') and num < 65:
answer += chr(num + 26)
elif ('A' <= s[i] and s[i] <= 'Z') and num > 90:
answer += chr(num - 26)
else:
answer += chr(num)
return answer
def caesar(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
아스키코드를 문자열로 변환해주는 함수입니다.
>>> chr(65)
A
>>> chr(90)
Z
문자열을 아스키코드로 변환해주는 함수입니다.
>>> ord('a')
97
>>> ord('z')
122
다른 사람이 푼 코드들을 보면서 이미 존재하는 라이브러리를 이용해 푸는 모습들을 많이 볼 수 있었고, 이 문제를 접하면서 앞으로 나도 그렇게 푸려고 노력해야겠다는 생각이 많이 들었다😊