https://programmers.co.kr/learn/courses/30/lessons/12926
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
풀이 과정
ord()로 문자의 아스키 코드를 감지할 수 있고, chr()로 아스키코드를 문자로 바꿀 수 있다.
A-Z의 문자는 아스키 코드로 65-90에 대응되고, a-z는 97-122에 대응됨을 이용하여 아스키 코드가 90, 122를 넘어가면 26을 빼줘서 처음으로 돌아가게끔 해주었다. n이 큰 수가 들어오는 조건이였다면 나머지 연산으로 문제를 해결해야 했겠지만 25까지 들어오기 때문에 그냥 범위를 넘어갈시 25를 빼주는 방법으로 문제를 해결할 수 있다.
소스 코드
def solution(s, n):
answer = ''
for letter in s:
if letter == ' ':
answer += ' '
continue
temp = ord(letter) + n
if 'A' <= letter <= 'Z': # letter.isupper()로도 판단 가능
if temp > 90:
temp -= 26
else: # letter.islower()로도 판단 가능
if temp > 122:
temp -= 26
answer += chr(temp)
return answer
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 기능개발 [파이썬] (0) | 2022.06.22 |
---|---|
프로그래머스 - 위장 [파이썬] (0) | 2022.06.22 |
프로그래머스 - 전화번호 목록 [파이썬] (0) | 2022.06.18 |
프로그래머스 - 소수 찾기 [파이썬] (0) | 2022.06.17 |
프로그래머스 - 서울에서 김서방 찾기 [파이썬] (0) | 2022.06.17 |