파이썬 백준 11655번
브론즈 1
https://www.acmicpc.net/problem/11655
문제 보기
분류: 구현, 문자열
문제 풀기
개별 알파벳 문자를 ASCII 코드와 대응하는 10진수로 변환한다.
변환된 숫자로 기준이될 10진수 위치를 0에 고정하여 +13 쉬프트 시키고 26으로 나눈 나머지를 통해 Z 이후의 알파벳의 숫자를 재조정한다.
c = ((c - 65) + 13) % 26 + 65
c = ((c - 97) + 13) % 26 + 97
10진수를 다시 알파벳으로 변환하고 합쳐 출력한다.
input() 을 이용하면 앞 뒤 공백을 입력 받는데 편하였으나, 어떻게든 readline() 으로 받겠다 꺽이지 않는 나의 마음으로 인해 조금의 뻘짓이 첨가되었다.
코드 보기
제출한것
import sys
inputdata = sys.stdin.readline
def fnROT13():
new_s_ls = []
for s in s_ls:
if s.isupper() == True and 65 <= ord(s) <= 90:
c = ord(s)
c = ((c - 65) + 13) % 26 + 65
new_s_ls.append(chr(c))
elif s.islower() == True and 97 <= ord(s) <= 122:
c = ord(s)
c = ((c - 97) + 13) % 26 + 97
new_s_ls.append(chr(c))
else:
new_s_ls.append(s)
new_s_ls.pop()
print(new_s_ls) # TEST PRINT
print("".join(new_s_ls))
if __name__ == "__main__":
# s_ls = list(map(str, inputdata().strip()))
s_ls = list(inputdata())
# s_ls = input()
print(s_ls) # TEST PRINT
fnROT13()
추가 하기
import sys
inputdata = sys.stdin.readline
def fnROT13():
new_s_ls = []
for s in s_ls:
if s.isupper() == True and 65 <= ord(s) <= 90: ## 대문자 그리고 ASCII 범위, 제출하고 보니 중복.
c = ord(s) ## ASCII 10진수 변환.
c = ((c - 65) + 13) % 26 + 65 ## 65 ~ 90 구간에 맞추기 위한.
new_s_ls.append(chr(c))
elif s.islower() == True and 97 <= ord(s) <= 122: ## 소문자 그리고 ASCII 범위, 제출하고 보니 중복.
c = ord(s) ## ASCII 10진수 변환.
c = ((c - 97) + 13) % 26 + 97 ## 97 ~ 122 구간에 맞추기 위한.
new_s_ls.append(chr(c))
else: ## 대문자 소문자도 아닌 숫자, 공백 등등.
new_s_ls.append(s)
new_s_ls.pop() # 이 악물고 readline 쓰겠다는 뻘짓의 결과.
print(new_s_ls) # TEST PRINT
print("".join(new_s_ls))
if __name__ == "__main__":
# s_ls = list(map(str, inputdata().strip())) # 제출 "출력 형식이 잘못되었습니다"
s_ls = list(inputdata()) # 이 악물고 readline 쓰겠다는 뻘짓의 결과.
# s_ls = input() # input() 쓰면 앞뒤 공백 입력받는것 쉽게 해결됨.
print(s_ls) # TEST PRINT
fnROT13()
# One is 1
# ['O', 'n', 'e', ' ', 'i', 's', ' ', '1', '\n']
# ['B', 'a', 'r', ' ', 'v', 'f', ' ', '1']
# Bar vf 1
# a a a
# [' ', ' ', 'a', ' ', 'a', ' ', 'a', ' ', ' ', '\n']
# [' ', ' ', 'n', ' ', 'n', ' ', 'n', ' ', ' ']
# n n n
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1431 - 시리얼 번호 (0) | 2023.01.01 |
---|---|
[Python] 백준 풀기 11728 - 배열 합치기 (0) | 2022.12.31 |
[Python] 백준 풀기 2941 - 크로아티아 알파벳 (0) | 2022.12.29 |
[Python] 백준 풀기 1453 - 피시방 알바 (0) | 2022.12.28 |
[Python] 백준 풀기 5635 - 생일 (0) | 2022.12.27 |