-
[백준] 11655번 ROT13Algorithm Study/Python 2024. 1. 16. 21:30
https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
풀이
입력
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.입력을 보면 S길이는 100 알파벳 대,소문자는 총 52자이기 때문에 단순 if 문으로 구현해도 특별히 문제없이 해결될 것같지만 아스키 코드를 이용해서 풀어봤다.
python은 ord()를 통해 아스키 코드로 변환, chr()를 이용하여 다시 문자로 변화할 수 있다.|
'A'는 65 'Z'는 90
'a'는 97 'z'는 122이다.전체
import sys input_string = sys.stdin.readline() answer = "" def check_character(c): temp = ord(c) if temp >= 65 and temp <= 90: temp += 13 if temp > 90: temp -= 26 return chr(temp) elif temp >= 97 and temp <= 122: temp += 13 if temp > 122: temp -= 26 return chr(temp) else: return c for i in input_string: answer += check_character(i) print(answer)
코드
입력 받은 값이 알파벳 대소문자의 범위에 포함되는지 확인 한 다음 13칸만큼 이동해주면 된다.
13칸 이동한 값이 대문자에서 'Z'인 90이 넘거나 소문자에서 'z'인 122가 넘으면 A(a)로 돌아가야하기 때문에
-26을 하는 것으로 다시 처음부터 카운트될 수 있게 구현했다.'Algorithm Study > Python' 카테고리의 다른 글
[백준] 10988번 팰린드롬인지 확인하기 (0) 2024.01.28 [백준] 1343번 폴리오미노 (0) 2024.01.16 [정올] 주사위 던지기1 (0) 2021.10.15 [SWEA] 특이한 자석 (0) 2021.10.12 [SWEA] 활주로 건설 (0) 2021.10.11