인천의 자유인

[Python] 시저 암호 - 프로그래머스(Lv.1) 본문

Python/Python코딩테스트

[Python] 시저 암호 - 프로그래머스(Lv.1)

Youngook 2024. 5. 29. 10:36
728x90
반응형

반응형

 

 

 

나의 문제 풀이

def solution(s, n):
    import string
    answer = ''
    lower_alpha = list(string.ascii_lowercase) + list(string.ascii_lowercase)
    upper_alpha = list(string.ascii_uppercase) + list(string.ascii_uppercase)
    for i in s:
        if i.isupper() == True:
            a = upper_alpha.index(i) 
            answer = answer + upper_alpha[a+n]
        elif i.islower() == True:
            a = lower_alpha.index(i)
            answer += lower_alpha[a+n]
        else:
            answer += ' '
    return answer

 

string.ascii_lowercase는 소문자 a부터 z까지 출력해주는 좋은 함수입니다.(import string은 필수입니다!) 이것을 두배로 만들어서 더한 숫자가 z를 넘어가고 a를 넘어갈것을 대비했습니다.(대문자도 마찬가지) 

 

문자열 s를 한 알파벳씩 출력하도록 해서 그 알파벳이 대분자라면 upper_alpha리스트에서 i의 위치와 i에서 n씩 이동한 알파벳을 answer에 더하는 방식으로 했습니다. 그것은 소문자도 마찬가지입니다. 그리고 중간에 공백이 나올 경우엔 answer 문자열에 공백을 더해서 결국에는 원하는 값을 얻었습니다.

728x90
반응형