Algorithm
[프로그래머스]시저암호
채햔
2021. 9. 15. 03:22
시저암호는 문자열 s에 있는 알파벳들을 n만큼 밀어서 다른 알파벳으로 만드는 암호화 방식이다.
조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
소문자와 대문자는 따로 생각하는 것!
최종작성한 코드이다.
def solution(s, n):
answer = "" #민 문자열을 저장할 변수
al_big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #대문자 리스트
al_small="abcdefghijklmnopqrstuvwxyz" #소문자 리스트
i=0 #s문자열을 인덱싱할 값
for alpha in s:
ss=""
if alpha == " ":
ss=s[i]
elif alpha in al_big:
al_index = al_big.index(alpha)
if al_index+n>25:
al_index=al_index-26
ss=al_big[al_index+n]
elif alpha in al_small:
al_index = al_small.index(alpha)
if al_index+n> 25:
al_index=al_index-26
ss=al_small[al_index+n]
i+=1
answer+=ss
return answer
#참고한 함수
list.index("A") : list에서 "A"의 인덱스
#알파벳 리스트에서 앞으로 넘어가는 부분을 고려하는게 어려웠다.
s아이템의 값이 Z/z일 때를 고려하기보다는, 현재 인덱스에서 밀어야할 n을 더한 값이 25(알파벳리스트의 마지막인덱스)를 넘어가면 어떻게 할지를 고려해야 함.
#아스키코드 이용해서 풀면 깔끔!
알파벳리스트로 작성한 부분을 아스키코드를 이용해 작성할 수 있음
#ord: 문자를 아스키코드로 변환
#chr: 아스키코드를 문자로 변환