[프로그래머스] 둘만의 암호(Python)

수경·2023년 5월 30일
0

problem solving

목록 보기
147/174

프로그래머스 - 둘만의 암호

풀이

구현문제

알파벳 배열 (a to z)에서 skip 배열의 원소를 제외한 후 (s 배열의 원소의 인덱스 + index)의 인덱스에 있는 알파벳 저장 후 반환 (배열의 사이즈를 넘어갈 수 있어서 % 연산 필요)

알파벳 배열을 만들어주는 함수를 사용해서 쉽게 풀었다!

from string import ascii_lowercase

alpha = list(ascii_lowercase)

# alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

그런데..........
python에 set이라는 집합 자료형이 있었다.......

Set

  • 중복 허용 x
  • 순서 x
  • 두 set의 교집합, 합집합, 차집합을 쉽게 구할 수 있음
    - 교집합: a & b
    - 합집합: a | b
    - 차집합: a - b

충격적인....................................

그래서 다시 풀었다!

그리고 for 문으로 리스트 한 줄에 만드는 연습을 좀 열심히 해야겠다!
넘나 어려워잉


코드 1

from string import ascii_lowercase

def solution(s, skip, index):
    alpha = list(ascii_lowercase)
    for i in skip:
        if i in alpha:
            alpha.remove(i)

    answer = ''
    for i in list(s):
        answer += alpha[(alpha.index(i) + index) % len(alpha)]

    return answer    

코드 2

from string import ascii_lowercase

def solution(s, skip, index):
    alpha = sorted(set(ascii_lowercase) - set(skip))
    return ''.join([alpha[(alpha.index(i) + index) % len(alpha)] for i in s])
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글