Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

고양이발일기

[Python] HackerRank - Caesar Cipher 본문

알고리즘

[Python] HackerRank - Caesar Cipher

sowish 2023. 5. 17. 14:21
반응형

Problem

 

Solving Process

 

우선 문장에 기호가 섞여있기 때문에

1. 알파벳인지 구분을 해준다

2. rotate 되는 숫자(k)가 알파벳의 갯수 26개 이상으로 돌 수 있으니 나머지 값을 계산하여 더해준다.

3. 대소문자를 구분하여 아스키 코드의 min, max 값을 지정한다.

4. max 값을 넘으면 26을 빼준다.

 

이런식으로 풀었는데 2, 4번을 합쳐서 더한 후, 한 번에 26을 나눠 나머지값을 구하는 형식으로 푸는게 더 깔끔할 것 같다.

 

Solution

def caesarCipher(s, k):
    answer = ''
    for i in s:
        if i.isalpha():
            k %= 26
            rot = ord(i) + k
            (min, max) = (65, 90) if i.isupper() else (97, 122)
            i = chr(rot) if (min <= rot and rot <= max) else chr(rot - 26)
        answer += i
        
    return answer
반응형
Comments