예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"
ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 됨
앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"
ROT13은알파벳 대문자와 소문자에만 적용할 수 있음
알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 함
예를 들어, "One is 1"을 ROT13으로 암호화하면 "Bar vf 1"
문자열이 주어졌을 때, "ROT13"으로 암호화한 다음 출력하기
입력
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어짐
S의 길이는 100을 넘지 않음
출력
첫째 줄에 S를 ROT13으로 암호화한 내용을 출력
시간 제한: 1초
메모리 제한: 256 MB
"""
입출력 예시)
(예제 입력 1)
Baekjoon Online Judge
-> Onrxwbba Bayvar Whqtr
(예제 입력 2)
One is 1
-> Bar vf 1
"""
## 의사코드 ##
# # 알파벳인 경우, ROT13으로 변경
# if s.isalpha():
# # z를 넘어가면 다시 a부터 시작
# if ord(s) + 13 > ord('z'):
# new += chr((ord('a')-1) + (ord(s) + 13) - (ord('z')))
# # Z를 넘어가면 다시 A부터 시작
# elif ord(s) + 13 > ord('Z') and ord(s) < (ord('Z')+1):
# new += chr((ord('A')-1) + (ord(s) + 13) - (ord('Z')))
# else:
# new += chr(ord(s) + 13)
# # 알파벳이 아닌 경우, 변경 x
# else:
# new += s
통과한 코드
string = input()
new = ''
for s in string:
# 알파벳인 경우, ROT13으로 변경
if s.isalpha():
# z를 넘어가면 다시 a부터 시작
if ord(s) + 13 > ord('z'):
new += chr((ord('a')-1) + (ord(s) + 13) - (ord('z')))
# Z를 넘어가면 다시 A부터 시작
elif ord(s) + 13 > ord('Z') and ord(s) < (ord('Z')+1):
new += chr((ord('A')-1) + (ord(s) + 13) - (ord('Z')))
else:
new += chr(ord(s) + 13)
# 알파벳이 아닌 경우, 변경 x
else:
new += s
print(new)