[Programmers]-パスワードの起動


1. Problem 📃


https://programmers.co.kr/learn/courses/30/lessons/12926

次の問題は、文字列と数値が与えられたときに、文字列に入力された数値から離れた文字を出力することです.

2. Logic 👨‍🏫


ASKIDコードを用いて範囲分割を行った.

3. Code 💻


1.私が解いたパスワード

def solution(s, n):
    answer = ''
    for i in range(len(s)):
        num = ord(s[i]) + n
        if s[i] == ' ':
            answer += ' '
        elif ('a' <= s[i] and s[i] <= 'z') and num < 97:
            answer += chr(num + 26)
        elif ('a' <= s[i] and s[i] <= 'z') and num > 122:
            answer += chr(num - 26)
        elif ('A' <= s[i] and s[i] <= 'Z') and num < 65:
            answer += chr(num + 26)
        elif ('A' <= s[i] and s[i] <= 'Z') and num > 90:
            answer += chr(num - 26)
        else:
            answer += chr(num)
    return answer

2.他人が解いたパスワード

def caesar(s, n):
    s = list(s)
    for i in range(len(s)):
        if s[i].isupper():
            s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
        elif s[i].islower():
            s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))

    return "".join(s)

4. Feedback 📚


1. chr()


Askyコードを文字列の関数に変換します.
>>> chr(65)
A
>>> chr(90)
Z

2. ord()


文字列をAskyコードの関数に変換します.
>>> ord('a')
97

>>> ord('z')
122
他の人が解いているコードを見ていると、すでに存在しているライブラリで解いている様子が多く見られますが、この問題に触れて、私もこれからも頑張って解いていきたいと思っています.😊