고양이발일기
[Python] HackerRank - Caesar Cipher 본문
반응형
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
반응형
'알고리즘' 카테고리의 다른 글
[Python] HackerRank - Anagram (1) | 2023.05.19 |
---|---|
[Python] LeetCode - Middle of the Linked List (0) | 2023.05.17 |
[Python] LeetCode - Reverse Linked List (0) | 2023.05.16 |
[Python] HackerRank - Minimum Absolute Difference in an Array (0) | 2023.05.16 |
[Python] LeetCode - Merge Two Sorted List (0) | 2023.05.15 |
Comments