프로그래머스 LV1 - 시저 암호
내 풀이
import string
from collections import deque
def solution(s, n):
lower = deque([i for i in string.ascii_lowercase])
upper = deque([i for i in string.ascii_uppercase])
words = list(s)
for i, word in enumerate(words):
if word == ' ':
continue
if word in lower:
word_index = lower.index(word)
lower.rotate(-n)
words[i] = lower[word_index]
elif word in upper:
word_index = upper.index(word)
upper.rotate(-n)
words[i] = upper[word_index]
return ''.join(words)
다른 풀이
def solution(s, n):
result = "" # 결과값
# 문자열 s를 하나씩 반복
for alp in s:
# 공백(" ") 땐 result에 공백(" ") 추가하기
if alp == " ":
result += " "
# ㅡㅡㅡ!중요!ㅡㅡㅡ
# chr(i)는 유니코드 숫자 값을 입력받아 그 코드에 해당하는 문자를 리턴하는 함수
# ord(c)는 문자의 유니코드 숫자 값을 리턴하는 함수
# alp가 소문자일 때
elif alp.islower():
result += chr((ord(alp)-ord('a') + n) % 26 + ord('a'))
# alp가 대문자일 때
elif alp.isupper():
result += chr((ord(alp)-ord('A') + n) % 26 + ord('A'))
return result
풀이 해석
chr과 ord를 사용하여 풀이하였다
배울 점
- chr, ord의 사용방법
댓글남기기