백준/String
[문자열/백준] 11655번 : ROT13
ydin
2023. 6. 1. 16:47
- 문제 : https://www.acmicpc.net/problem/11655
문제 이해
- 주어진 문자열에서 알파벳들을 13칸씩 미루어서 새로운 문자열을 만드는 문제다.
- 제약사항으로는 소문자는 소문자로 미루고, 대문자는 대문자로 미뤄야 한다.
- 알파벳의 order를 가지고 풀면 되지만, 제약사항이 있기 때문에 그 부분에 유의해서 풀어야한다.
- 처음에는 일일히 조건을 나누어서 풀었지만, 그럴 필요없이 아래처럼 간단하게도 풀 수 있다.
풀이 로직
- 소문자의 order를 13칸 미룬다음 혹시나 z(소문자 끝)의 범위를 넘어가는 것에 대비해 97을 빼준 뒤 26으로 나눈 나머지를 97에 더한다
- 대문자도 마찬가지로 13칸 미룬다음 Z(대무낮 끝)의 범위를 넘어가는 것에 대비해 65를 빼준 뒤 26으로 나눈 뒤 나머지를 65에 더하면 된다.
- 숫자나 띄어쓰기는 그냥 출력해주면 된다.
정답 풀이
arr=input()
ans=''
for i in arr:
if i.islower():
print(chr(97+(ord(i)+13-97)%26), end='')
elif i.isupper():
print(chr(65+(ord(i)+13-65)%26), end='')
else:
print(i,end='')