코딩테스트 연습/프로그래머스
[Python] 프로그래머스 코딩테스트 LV1 - 시저 암호
환타몬
2022. 1. 22. 14:34
https://programmers.co.kr/learn/courses/30/lessons/12926
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
1. 여담
생각보다 쉽지 않았다. 집중하기 힘든 환경이였어서 그럴 수도 있고.
2. 소스코드
def solution(s, n):
answer = ''
alp_li ="abcdefghijklmnopqrstuvwxyz" #알파벳 소문자 리스트가 될 문자열
alp_d = alp_li.upper() # 알파벳 소문자 문자열을 대문자로 바꿔줌
alp_li = list(alp_li) #알파벳 소문자 리스트
alp_d = list(alp_d) # 알파벳 대문자 리스트
for i in s: # s의 각 요소 i를 반환
if i in alp_li: # 소문자 리스트 내에 i가 있다면
answer += alp_li[(alp_li.index(i)+n)%26]
elif i in alp_d: # 대문자 리스트 내에 i가 있다면
answer += alp_d[(alp_d.index(i)+n)%26]
else : # 공백일 경우
answer +=" "
return answer
3. 생각
시저암호를 구현할 때 우선 알파벳의 리스트를 만드는 것을 생각했다.
그 후 for문으로 주어진 매개변수 s를 돌면서 list내에 해당하는 것이 있으면 찾고, 그 인덱스에 n을 더해서 값을 반환하는 것으로 한다. 그리고 초과되는 것은 순환할 수 있도록 나머지를 구하는 연산자 %를 이용해서 순환하도록 했다.