728x90
<문제 설명>
https://programmers.co.kr/learn/courses/30/lessons/12926
주어진 문장의 알파벳을 일정한 거리만큼 밀어서 만드는 암호가 시저암호이다. 이 시저암호문을 만드는 코드를 작성하는 것이 목표이다.
(단 공백은 밀어도 공백이다.)
입출력의 예는 다음과 같다.
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
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스 lv 1] 자연수 뒤집어 배열로 만들기.py (0) | 2022.02.03 |
---|---|
[프로그래머스 lv 1] 2016년.py (0) | 2022.02.02 |
[프로그래머스 lv 1] 예산.py (0) | 2022.01.27 |
[프로그래머스 lv 1] 정수 내림차순으로 배치하기.py (0) | 2022.01.26 |
[프로그래머스 lv 1] 문자열 다루기 기본.py (0) | 2022.01.24 |