https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
문제분석
알파벳을 13개씩 밀어서 출력하는 문제이다. 알파벳이 아닌 문자는 그대로 출력하고 알파벳은 13개씩 출력하는데, 만약 13개를 민 알파벳이 z를 넘어갈 경우, a부터 시작해야 한다.
코드
n = input()
for i in n:
if 97<=ord(i)<=109 or 65<=ord(i)<=77:
print(chr(ord(i)+13), end='')
elif 110<=ord(i)<=122:
print(chr(97+ord(i)-110), end='')
elif 78<=ord(i)<=90:
print(chr(65+ord(i)-78), end='')
else:
print(i, end='')
문제풀이
if-elif문을 통해 구현할 수 있다. 아스키 코드로 변환하여 알파벳일 경우 13개씩 밀어서 출력하고 만약 13개를 민 것이 z를 넘어갈 경우 elif문을 통해 a부터 시작하도록 하여 출력하면 된다.
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 1032번 명령 프롬포트 (0) | 2022.02.21 |
---|---|
<6주차> [BOJ / C++] 1932번 - 정수 삼각형 (0) | 2022.02.20 |
[백준/c++] 2798번 블랙잭 (0) | 2022.02.19 |
[BOJ/python] 14247번 나무 자르기 (0) | 2022.02.17 |
[백준/C++] 16955번 오목, 이길 수 있을까? (0) | 2022.02.15 |