https://www.acmicpc.net/problem/11655
문제 분석
카이사르 암호 방식을 이용해 영어 알파벳을 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 |