https://school.programmers.co.kr/learn/courses/30/lessons/12926
1. 내가 작성한 코드
def solution(s, n):
s = list(s)
a = ''
for i in s:
if ord(i) == 32:
a += ' '
else:
num = ord(i)
if 90 >= num >= 65:
if num + n > 90:
a += chr(num + n - 26)
else:
a += chr(num + n)
else:
if num + n > 122:
a += chr(num + n -26)
else:
a += chr(num + n)
return a
isupper, islower 이라는 함수가 있는지 몰라서 아스키코드로 해결했다.
if문의 if문을 쓰는 상당히 복잡한 코드,,
1. 띄어쓰기가 있을 때는 그냥 띄어쓰기를 문자열에 추가
2. 대문자일 경우(아스키코드가 65에서 90사이) n을 더한 값이 Z보다 아스키코드가 크면 -26 한 바퀴 빼준 후 문자열에 추가
3. 소문지일 경우(아스키코드가 122보다 큼) n을 더한 값이 z보다 아스키코드가 크면 -26 한 바퀴 빼준 후 문자열에 추가
2. 다른 코드
def solution(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)
댓글