-
[백준] 11655번 ROT13Algorithm Study/Python 2024. 1. 16. 21:30
https://www.acmicpc.net/problem/11655
풀이
입력
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 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