1 분 소요

문제 링크

내 풀이


import string
from collections import deque

def solution(s, n):
    lower = deque([i for i in string.ascii_lowercase])
    upper = deque([i for i in string.ascii_uppercase])
    words = list(s)
    for i, word in enumerate(words):
        if word == ' ':
            continue
        if word in lower:
            word_index = lower.index(word)
            lower.rotate(-n)
            words[i] = lower[word_index]
        elif word in upper:
            word_index = upper.index(word)
            upper.rotate(-n)
            words[i] = upper[word_index]
            
    return ''.join(words)
    

다른 풀이

def solution(s, n):
    
    result = "" # 결과값
    
    # 문자열 s를 하나씩 반복
    for alp in s:
        
        # 공백(" ") 땐 result에 공백(" ") 추가하기
        if alp == " ":
            result += " "
        
        # ㅡㅡㅡ!중요!ㅡㅡㅡ
        # chr(i)는 유니코드 숫자 값을 입력받아 그 코드에 해당하는 문자를 리턴하는 함수
        # ord(c)는 문자의 유니코드 숫자 값을 리턴하는 함수
        
        # alp가 소문자일 때
        elif alp.islower():
            result += chr((ord(alp)-ord('a') + n) % 26 + ord('a'))
        
        # alp가 대문자일 때
        elif alp.isupper():
            result += chr((ord(alp)-ord('A') + n) % 26 + ord('A'))
    
    
    return result

풀이 해석

chr과 ord를 사용하여 풀이하였다

배울 점

  • chr, ord의 사용방법

댓글남기기