알고리즘/프로그래머스

[파이썬] 프로그래머스_시저 암호

딱따구르리 2022. 8. 30. 17:51
728x90
반응형

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/12926

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

해설

 

이 문제는 대문자 / 소문자 / 공백을 따로 처리해줘야 한다.

각 알파벳에 n을 더한 후 알파벳을 구하면 되는데, z / Z를 넘어가면 다시 a / A로 돌아가야 한다.

이는 각 알파벳을 아스키코드로 변경한 후 계산하면 쉽다.

 

아스키코드 값을 보면 

a : 97 - z : 122

A : 65 - Z : 90

이므로 각각 z / Z 값을 넘어가는지 확인해주면 된다.

넘어간다면 알파벳 개수(26)만큼 빼줘서 다시 a / A부터 시작하도록 하면 된다.

 

공백도 그대로 둬야 하기 때문에 빼먹으면 안된다.


코드

 

-파이썬

def solution(s, n):
    answer = ''
    
    lst = list(s)
    
    for i in lst:
        num = ord(i) + n
        if i.isupper():  #대문자
            if num > 90:
                answer += chr(num - 26)
            else:
                answer += chr(num)
        elif i.islower():  #소문자
            if num > 122:
                answer += chr(num - 26)
            else:
                answer += chr(num)
        elif i.isspace():  #공백
            answer += " "
    
    return answer
728x90
반응형