[ROT13]-11655번
My answer
s=input()
for i in range(len(s)):
if(s[i].isalpha()==1):
tmp=ord(s[i])+13
if('a'<=s[i]<='z'):
if(tmp>122): tmp-=26
s=s[:i]+chr(tmp)+s[i+1:]
else:
if(tmp>90): tmp-=26
s=s[:i]+chr(tmp)+s[i+1:]
print(s)
Another answer
import codecs
print(codecs.encode(input(),"rot13"))
--------------------------------------
def f(c):
i=ord(c)
if i>96:return chr((i-84)%26+97)
if i>64:return chr((i-52)%26+65)
return c
print(''.join(map(f,input())))
더보기
우선 나는 아스키코드로 문제를 풀기 위해서 ord()와 chr()을 사용해서 문제를 풀었다. 우선 대문자와 소문자를 나눈뒤에 z,Z가 넘어가면다시 앞으로 와야하므로 넘어갈경우 -26을 해줬다. 아래 코드중 위에 함수는 codecs라는 모듈을 이용했는데, 그안에 rot13이 기본으로 있다고 한다. 이런 고급기술은 나중에 여유가 되면 외우자..그 아래 코드는 나와 비슷한 방식인데, 대문와 소문자를 구분하고, 저기서 84와 52를 빼줬는데 그게 무엇인지모르겠다.. 97과 65를 더한것은 나머지에서 다시 'a'와 'A'를 더해준건데..
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python/백준] #1406- [에디터] [try_again] (0) | 2021.12.03 |
---|---|
[Python/백준] #11656- [접미사 배열] (0) | 2021.12.02 |
[Python/백준] #10820- [문자열 분석] (0) | 2021.12.01 |
[Python/백준] #10809- [알파벳 찾기] (0) | 2021.12.01 |
[Python/백준] #10808 - [알파벳 개수] (0) | 2021.12.01 |