문제 링크 (Level 1)
https://school.programmers.co.kr/learn/courses/30/lessons/12926?language=python3
나의 코드 (Python)
def solution(s, n):
answer = ''
for a in s:
if a == ' ': # 공백은 밀어도 공백
answer += ' '
continue
# A : 65 , Z : 90
# a : 97 , z : 122
tmp = ord(a) + n # ord는 str를 아스키 코드로 변환
if ord(a) <= 90 and tmp >= 91: # Z이하이면서 +n시 Z를 넘길 경우
tmp -= 90 # Z를 넘긴만큼 체크
answer += chr(64 + tmp) # A부터 다시 시작하여 chr를 통해 str로 변환
elif tmp >= 123:
tmp -= 122 # z를 넘기면 다시 넘긴만큼 체크
answer += chr(96 + tmp) # a부터 다시 시작하여 chr를 통해 str로 변환
else:
answer += chr(tmp) # 아니면 바로 다시 str로 변환
return answer
A-Z : 65~95
a-z : 97~122
따라서 조건은
1. Z이하이면서 n만큼 밀었을 때 95를 넘는경우
2. z의 범위인 122를 넘는 경우
3. 나머지
세 가지의 경우의 수를 나누어 문제를 해결합니다.
'코딩공부 > 프로그래머스 (python)' 카테고리의 다른 글
[프로그래머스] 제일 작은 수 제거 (Python) (0) | 2022.08.04 |
---|---|
[프로그래머스] 하샤드 수 (Python) (0) | 2022.08.04 |
[프로그래머스] 자릿수 더하기 (Python) (0) | 2022.07.28 |
[프로그래머스] 평균 구하기 (Python) (0) | 2022.07.26 |
[프로그래머스] 약수의 합 (Python) (0) | 2022.07.24 |
댓글