프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12926
[나의 풀이]
⌛ 30분 소요
def solution(s, n):
answer = ''
uppers = [chr(i) for i in range(65,91)]
lowers = [chr(i) for i in range(97,123)]
for x in s:
if x==" ":
answer += " "
continue
if x.islower(): # 소문자
answer += lowers[(lowers.index(x)+n%26)%26]
else: # 대문자
answer += uppers[(uppers.index(x)+n%26)%26]
return answer
입력되는 알파벳 문자열을 요구하는 칸만큼 이동하여 변환하는 문제입니다. 대문자,소문자 알파벳 리스트를 정의하고 인덱싱하여 답을 도출하는 방식으로 구현하였습니다.🐱🐱🐱
[다른 사람의 풀이]
def caesar(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
다른 풀이로는 알파벳 리스트를 정의하지 않고 ord(), chr() 함수를 활용하여 간결히 표현하는 방식입니다.🐼🐼🐼
감사합니다.
👍