프로그래머스_시저 암호

임정민·2023년 10월 13일
1

알고리즘 문제풀이

목록 보기
116/173
post-thumbnail

프로그래머스 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() 함수를 활용하여 간결히 표현하는 방식입니다.🐼🐼🐼

감사합니다.

profile
https://github.com/min731

1개의 댓글

comment-user-thumbnail
2023년 10월 16일

👍

답글 달기