[Hackerrank] Week4 - Caesar Cipher

DreamJJW·2023년 4월 11일
0

Hackerrank

목록 보기
15/18

문제


문자열 s를 돌면서 isAlpha로 알파벳인지 판별, 대문자인지 소문자인지 추가로 판별한 후 알파벳을 바꿔주면 되는 문제.

다소 코드가 더러운데, ord와 chr 함수를 사용한다면 좀 더 깔끔하게 개선할 수 있을듯 하다.


코드

from string import ascii_lowercase
from string import ascii_uppercase

def caesarCipher(s, k):
    lower_case = list(ascii_lowercase) * (k + 1)
    upper_case = list(ascii_uppercase) * (k + 1)
    cipher = ''
    for i in s:
        if i.isalpha():
            if i in lower_case:
                idx = lower_case.index(i)
                cipher += lower_case[idx + k]
            elif i in upper_case:
                idx = upper_case.index(i)
                cipher += upper_case[idx + k]
        else:
            cipher += i

    return cipher
profile
간절한 사람

0개의 댓글