알고리즘
[프로그래머스 lv 1] 시저암호.py
파뱁
2022. 1. 31. 23:09
728x90
<문제 설명>
https://programmers.co.kr/learn/courses/30/lessons/12926
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
주어진 문장의 알파벳을 일정한 거리만큼 밀어서 만드는 암호가 시저암호이다. 이 시저암호문을 만드는 코드를 작성하는 것이 목표이다.
(단 공백은 밀어도 공백이다.)
입출력의 예는 다음과 같다.
s | n | result |
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
<문제 해결 아이디어>
아스키 코드를 이용하면 되는 문제이다. chr() : 아스키 코드의 수를 문자로 변환/ ord() : 문자를 아스키 코드로 변환
isupper()와 islower()로 대소문자를 우선 판별한 후, 그에 맞게끔 아스키 코드 값을 가져와서 주어진 n 만큼 밀면 되는데, Z 는 밀면 A가 되고 z는 밀면 a가 되야하기 때문에 26으로 나눈 나머지를 기준으로 자리를 밀면 된다.
<문제 풀이 코드>
def solution(s, n):
answer = ''
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 answer.join(s)
728x90
반응형