내일배움캠프 AI/페어프로그래밍

[페어프로그래밍] 230503 둘만의 암호

생각하는 코댕이 2023. 5. 3. 15:19
728x90

둘만의 암호


페어프로그래밍 결과 코드

# 페어프로그래밍으로 제작한 코드

# 문자열skip에 포함되어 있는 알파벳은 순서에서 제외
# 문자열s의 각 알파벳 판별 for문
# index만큼의 뒷순서 알파벳으로 반환
# z를 넘어가면 다시 a부터 시작
# 결과값 리턴

def solution(s, skip, index):
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    # alphabet_list = list(ascii_lowercase)
    answer = ''
    for j in skip:
        if j in alphabet:
            alphabet = alphabet.replace(j,'')
    for i in s:
        # alphabet[alphabet.index(i)]  = i
        n = alphabet[(alphabet.index(i) + index)%len(alphabet)]
        answer += n
    return answer

흠터레스팅 코드

# ascii 코드 사용 , set활용 for 연산
from string import ascii_lowercase

def solution(s, skip, index):
    result = ''

    a_to_z = set(ascii_lowercase)
    a_to_z -= set(skip)
    a_to_z = sorted(a_to_z)
    l = len(a_to_z)

    dic_alpha = {alpha:idx for idx, alpha in enumerate(a_to_z)}

    for i in s:
        result += a_to_z[(dic_alpha[i] + index) % l]

    return result

시사점 or 새로이 알게된 점

ascii를 활용하여 a to z를 사용할 수 있음을 알게 되었다.
set type은 list와 str과는 달리 ± 연산이 가능함을 염두하도록 하자.

728x90