728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12926
해설
이 문제는 대문자 / 소문자 / 공백을 따로 처리해줘야 한다.
각 알파벳에 n을 더한 후 알파벳을 구하면 되는데, z / Z를 넘어가면 다시 a / A로 돌아가야 한다.
이는 각 알파벳을 아스키코드로 변경한 후 계산하면 쉽다.
아스키코드 값을 보면
a : 97 - z : 122
A : 65 - Z : 90
이므로 각각 z / Z 값을 넘어가는지 확인해주면 된다.
넘어간다면 알파벳 개수(26)만큼 빼줘서 다시 a / A부터 시작하도록 하면 된다.
공백도 그대로 둬야 하기 때문에 빼먹으면 안된다.
코드
-파이썬
def solution(s, n):
answer = ''
lst = list(s)
for i in lst:
num = ord(i) + n
if i.isupper(): #대문자
if num > 90:
answer += chr(num - 26)
else:
answer += chr(num)
elif i.islower(): #소문자
if num > 122:
answer += chr(num - 26)
else:
answer += chr(num)
elif i.isspace(): #공백
answer += " "
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬] 프로그래머스_진료순서 정하기 (0) | 2022.10.25 |
---|---|
[파이썬] 프로그래머스_최빈값 구하기 (0) | 2022.10.25 |
[파이썬] 프로그래머스_자릿수 더하기 (0) | 2022.08.29 |
[파이썬] 프로그래머스_서울에서 김서방 찾기 (0) | 2022.08.29 |
[파이썬] 프로그래머스_두 개 뽑아서 더하기 (0) | 2022.06.22 |