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

이정연·2022년 11월 2일
0

CodingTest

목록 보기
78/165
post-thumbnail

아스키 코드

ascii

(출처: 나무위키)

문제를 풀기 위한 핵심 아이디어

로직은 아래와 같이 설계했다.

  • 문자열의 각 원소를 돌면서 n을 더한다
  • 해당 문자열이 소문자인지 대문자인지 판별한다
  • 소문자라면 아스키 코드 90(z) 아래로 올 때까지 26을 계속 빼준다. (왜냐하면 알파벳이 26개니까)
  • 대문자라면 아스키 코드 122(Z) 아래로 올 때까지 26을 계속 빼준다. (같은 이유)
  • 그리고 최종값을 answer에 하나씩 추가해주면 그것이 곧 민 숫자가 된다.

CODE

def solution(s, n):
    answer = ''
    s = list(s)
    for i in range(len(s)):
        if s[i] == ' ':
            answer += ' '
            continue
        change = ord(s[i]) + n
        while s[i].islower() and change > 122:
            change -= 26
        while s[i].isupper() and change > 90:
            change -= 26
        answer += chr(change)
    return answer
profile
0x68656C6C6F21

0개의 댓글