https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
문제 분석
카이사르 암호 방식을 이용해 영어 알파벳을 13글자씩 뒤로 밀면 된다.
소스코드
s=list(input())
for i in range(len(s)):
x=ord(s[i])
if 65<=x<=90 or 97<=x<=122:
if s[i].isupper(): x-=65
else: x-=97
x+=13
x%=26
if s[i].isupper(): x+=65
else: x+=97
s[i]=chr(x)
print(''.join(s))
문제풀이
영어 알파벳 이외의 문자는 그대로 출력해야 한다.
따라서 첫 if문에 알파벳 소문자와 대문자 아스키코드를 이용해 분류하였다.
대문자와 소문자를 구별하여 아스키코드 값을 0으로 만들어준 뒤, 13을 뒤로 밀고 나머지를 이용해 문자를 출력하였다.
'Koala - 7기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 10974 모든 순열 (0) | 2022.08.19 |
---|---|
[백준/Python] 8979 올림픽 (0) | 2022.08.17 |
[백준/python] 12789번 도키도키 간식드리미 (2) | 2022.08.14 |
[백준/Python] 2566 최댓값 (2) | 2022.08.14 |
[백준/C++] 2902 KMP는 왜 KMP일까? (1) | 2022.08.14 |