https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
처음엔 무식하게 알파벳 들어있는 리스트 만들고 거기서 인덱스+13을 하려고했다.
but . . 아스키 코드를 사용하면 비교적 쉽게 구할 수 있음.
ord(문자) = 아스키 코드 넘버를 출력
출력된 아스키 코드 넘버 +13하면 알아서 13번째 뒤에 알파벳을 꺼내줌.
하지만 총 26개의 알파벳중 13번보다 앞에 번호일 경우에만 13을 더해주고,
13번보다 뒷 번호라면 -13을 해줘야 원하는 값이 나온다.
x = input()
total = ''
for i in x:
if 'a' <= i <= 'z':
if i <='m':
total += chr(ord(i)+13)
else :
total +=chr(ord(i)-13)
elif 'A' <= i <= 'Z':
if i <='M':
total += chr(ord(i)+13)
else :
total +=chr(ord(i)-13)
else:
total += i
print(total)
'백준 문제풀이 > 문자열' 카테고리의 다른 글
[백준] 10820 문자열 분석 - python (1) | 2022.11.17 |
---|---|
[백준] 10808 알파벳 개수 / 10809 알파벳 찾기 - python (0) | 2022.11.17 |