[프로그래머스] - 시저암호(Python)

문제📝


풀이💡

  • 문자열 s를 리스트 형태로 강제 타입 변환을 한다.
  • i가 공백이라면 그대로 공백을 answer에 넣어준다.
  • isupper()를 이용해서 대문자를 판단하고 맞다면 ord(i)+n의 값이 Z의 아스키코드인 90을 초과하면 26을 빼주고 그렇지 않으면 그대로 더한 값을 chr() 형태로 answer에 넣어준다.
  • 소문자라면 ord(i)+n의 값이 z의 아스키코드인 122를 초과하면 26을 빼주고 그렇지 않으면 그대로 더한 값을 chr() 형태로 answer에 넣어준다.
  • join을 통해서 리스트를 합쳐서 반환한다.

코드💻

# 프로그래머스 Lv1 - 시저 암호
# 문제링크: https://programmers.co.kr/learn/courses/30/lessons/12926

def solution(s, n):
    answer = []
    arr = list(s) 
  
    for i in arr: 
        if i == ' ':
            answer.append(chr(ord(i)))
        else:
            if i.isupper() ==1:
                # i가 대문자가 맞다면
                if ord(i)+n>90:
                    answer.append(chr(ord(i)+n-26))
                else:
                    answer.append(chr(ord(i)+n))
            else:
                # i가 소문자가 맞다면
                if ord(i)+n>122:
                    answer.append(chr(ord(i)+n-26))
                else:
                    answer.append(chr(ord(i)+n))  
    return "".join(answer)

결과😎


느낀점👨‍💻

위 문제를 풀기 위해서 알파벳의 아스키코드를 검색하고 영어 문자로 바꿔주는 chr()를 알게 되고 정수 형태로 바꿔주는 ord()도 알게 되었다. 두 메소드를 적용해서 문제를 쉽게 해결할 수 있었다.


Sinbmil의 알고리즘 문제 코드

-> https://github.com/Sinbmil/Algorithm-Study

좋은 웹페이지 즐겨찾기