본문 바로가기
코딩공부/프로그래머스 (python)

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

by CodingKwon 2022. 7. 28.

문제 링크 (Level 1)

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

 

프로그래머스

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

programmers.co.kr

 

나의 코드 (Python)

def solution(s, n):
    answer = ''
    for a in s:
        if a == ' ': # 공백은 밀어도 공백
            answer += ' '
            continue
        # A : 65 , Z : 90
        # a : 97 , z : 122
        tmp = ord(a) + n # ord는 str를 아스키 코드로 변환
        if ord(a) <= 90 and tmp >= 91: # Z이하이면서 +n시 Z를 넘길 경우
            tmp -= 90 # Z를 넘긴만큼 체크
            answer += chr(64 + tmp) # A부터 다시 시작하여 chr를 통해 str로 변환
        elif tmp >= 123:
            tmp -= 122 # z를 넘기면 다시 넘긴만큼 체크
            answer += chr(96 + tmp) # a부터 다시 시작하여 chr를 통해 str로 변환
        else:
            answer += chr(tmp) # 아니면 바로 다시 str로 변환
    return answer

 

A-Z : 65~95

a-z : 97~122

 

따라서 조건은

1. Z이하이면서 n만큼 밀었을 때  95를 넘는경우

2. z의 범위인 122를 넘는 경우

3. 나머지

 

세 가지의 경우의 수를 나누어 문제를 해결합니다.

댓글