본문 바로가기

Algorithm/프로그래머스 연습 문제

프로그래머스 / 코딩 테스트 / 시저 암호

문제 설명

 

 

문제 해결

 

시저 암호를 구현하면 되는 문제이다.

대문자, 소문자, 공백이 문자열에 섞일 수 있다는 것을 생각하고 코딩하면 어렵지 않다.

 

string 라이브러리에서 ascii_lowercase, ascii_uppercase 상수를 이용한다.

 

string — 일반적인 문자열 연산 — Python 3.9.1 문서

string — 일반적인 문자열 연산 소스 코드: Lib/string.py 문자열 상수 이 모듈에 정의된 상수는 다음과 같습니다: string.ascii_letters 아래에 나오는 ascii_lowercase와 ascii_uppercase 상수를 이어붙인 것입니다

docs.python.org

 

상수들을 tuple 형태의 데이터로 저장한 후, 각 문자에 해당하는 tuple의 index를 찾고 n만큼 떨어진 문자를 결과에
추가하는 방식으로 코드를 구현해주면 된다.

 

import string

def solve(s,n):
    res = ''
    ll = tuple(string.ascii_lowercase)
    ul = tuple(string.ascii_uppercase)
    for i in range(len(s)):
        if s[i].isupper():
            res += ul[(ul.index(s[i]) + n) % 26]
        elif s[i].islower():
            res += ll[(ll.index(s[i]) + n) % 26]
        elif s[i] == ' ':
            res += s[i]
    return res

def solution(s, n):
    answer = solve(s,n)
    return answer