🚩 문제 설명
https://www.acmicpc.net/problem/11655
⏱️ 시간 복잡도
▪ 문자열의 크기가 N이라고 가정한다면, 시간 복잡도는 O(N)에 해당한다.
◾ ROT13 암호화
- 카이사르 암호의 일종
- 영어 알파벳을 13글자씩 밀어서 만든다.
- 해당 암호문을 복호화 할려면 다시 ROT13 하면 된다.
- ROT13은 알파벳 대/소문자에만 적용할 수 있다.
◾ 만약 알파벳이 아닌 숫자가 나온다면 원래 글자 그대로 남아 있어야 한다.
◾ 주어지는 문자열을 ROT13 에 맞게 암호화 하는 문제.
✅ 입출력
1) 암호화 해야할 문자열이 주어진다.
return ➡️ ROT13으로 암호화한 문자열을 출력.
✔️ 예제 1
Baekjoon Online Judge
Onrxwbba Bayvar Whqtr
✔️ 예제 2
One is 1
Bar vf 1
📑 문제 풀이
with 파이썬 (Python)
import sys
S = sys.stdin.readline()
for s in S:
if ord(s) in range(ord('a'), ord('z') - 12) or ord(s) in range(ord('A'), ord('Z') - 12):
print(chr(ord(s) + 13), end='')
elif ord(s) in range(ord('z') - 13, ord('z') + 1) or ord(s) in range(ord('Z') - 13, ord('Z') + 1):
print(chr(ord(s) - 13), end='')
else:
print(s, end='')
💬 Point
➡️ ord('z') - 13 to ord('z') + 1 에 해당하면 - 13한다.
◾ m 까지는 13을 더해주면 된다.
◾ n 부터는 13을 더하면 z에 해당하는 90을 초과하게 된다.
◾ 초과하게 되면 다시 a 부터 시작된다.
◾ 따라서 이는 13을 빼주는 것과 같다.
# 코드플러스 ROT13 파이썬 python
# 백준 11655 ROT13 파이썬 python
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 백준 알고리즘' 카테고리의 다른 글
[자료구조(참고)] [BJ11656] 접미사 배열 (0) | 2021.11.29 |
---|---|
[자료구조(참고)] [BJ10824] 네 수 (0) | 2021.11.29 |
[자료구조(참고)] [BJ2743] 단어 길이 재기 (0) | 2021.11.29 |
[자료구조(참고)] [BJ10820] 문자열 분석 (0) | 2021.11.29 |
[자료구조(참고)] [BJ10809] 알파벳 찾기 (0) | 2021.11.29 |