[프로그래머스 Lv1] 시저 암호 (파이썬)

Jewon Joel Park·2022년 6월 1일
0

Programmers-solution

목록 보기
11/34

문제 링크


문제 설명

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸되 공백은 그대로 유지하여 변환된 문자열을 반환하는 함수 작성


풀이 코드

def solution(s, n):
    answer = ''
    for c in list(s):
        if c == " ":
            answer += " "
        else:
            if c.isupper():
                answer += chr((ord(c) - ord("A") + n) % 26 + ord("A"))
            elif c.islower():
                answer += chr((ord(c) - ord("a") + n) % 26 + ord("a"))
                
    return answer

코드 설명

  • ASCII 코드를 활용하여 알파벳을 특정 거리만큼 밀어내는 방식
  1. 문자열을 리스트화하여 순회할 때, 공백문자이면 정답 문자열에 공백 추가
  2. 아닐 경우 대문자일 때와 소문자일 때를 판별
  3. 해당 문자 ASCII 코드에서 대소문자 시작 알파벳의 코드값을 빼서 시작점을 당기고 n만큼 더한 뒤, 해당 값을 26으로 나눈 나머지값을 시작문자 코드에 더함으로써 Z 또는 z값을 넘어가는 수치를 보정함
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글