- 문제 : https://www.acmicpc.net/problem/11655
문제 이해
- 주어진 문자열에서 알파벳들을 13칸씩 미루어서 새로운 문자열을 만드는 문제다.
- 제약사항으로는 소문자는 소문자로 미루고, 대문자는 대문자로 미뤄야 한다.
- 알파벳의 order를 가지고 풀면 되지만, 제약사항이 있기 때문에 그 부분에 유의해서 풀어야한다.
- 처음에는 일일히 조건을 나누어서 풀었지만, 그럴 필요없이 아래처럼 간단하게도 풀 수 있다.
풀이 로직
- 소문자의 order를 13칸 미룬다음 혹시나 z(소문자 끝)의 범위를 넘어가는 것에 대비해 97을 빼준 뒤 26으로 나눈 나머지를 97에 더한다
- 대문자도 마찬가지로 13칸 미룬다음 Z(대무낮 끝)의 범위를 넘어가는 것에 대비해 65를 빼준 뒤 26으로 나눈 뒤 나머지를 65에 더하면 된다.
- 숫자나 띄어쓰기는 그냥 출력해주면 된다.
정답 풀이
arr=input()
ans=''
for i in arr:
if i.islower():
print(chr(97+(ord(i)+13-97)%26), end='')
elif i.isupper():
print(chr(65+(ord(i)+13-65)%26), end='')
else:
print(i,end='')
'백준 > String' 카테고리의 다른 글
[문자열/백준] 22233번 : 가희와 키워드 (0) | 2023.06.14 |
---|---|
[문자열/백준] 1213번 : 팰린드롬 만들기 (0) | 2023.06.14 |
[문자열/백준] 2607번 : 비슷한 단어 (0) | 2023.06.12 |
[문자열/백준] 2870번 : 수학숙제 (0) | 2023.06.01 |
[문자열/백준]20920번 : 영단어 암기는 괴로워 (0) | 2023.06.01 |