몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 1] 시저 암호 {언어 : Python} 본문

개발 언어 입문/파이썬 문법

프로그래머스 [Lv. 1] 시저 암호 {언어 : Python}

스위태니 2024. 9. 20. 21:11

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12926?language=python3

 

프로그래머스

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

programmers.co.kr

정답 코드

def solution(s, n):
    # print(ord("A")) 65
    # print(ord("Z")) 90
    # print(ord("a")) 97
    # print(ord("z")) 122
    def makeString(si):
        if si == " ":
            return " "
        elif si.isupper():
            return chr((ord(si)-65+n)%26+65)
        else:
            return chr((ord(si)-97+n)%26+97)
    sb = []
    for si in s:
        sb.append(makeString(si))

    answer = "".join(sb)
    return answer

풀이 방법

  • ord(문자) = 아스키코드 문자에 해당하는 숫자
    • 예를 들어 ord("A") == 65
  • chr(숫자) = 아스키코드 숫자에 해당하는 문자
    • 예를 들어 chr(65) == "A"
  • isupper : 대문자이면 True 아니면 False
  • islower : 소문자이면 True 아니면 False
  • string builder : 문자열을 저장해주는 리스트
    • 시간복잡도 차이 
      • 문자열 += 문자
        • O(n)
      • 리스트.append(문자)
        • O(1)

느낀점

  • 어떻게 푸는지 알지만 함수명이 기억나지 않았다.