프로그래머스 연습문제
- Lv 1. 둘만의 암호 (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/155652
def solution(s, skip, index):
answer = ''
alphabet = 'abcdefghijklmnopqrstuvwxyz'
for i in skip:
alphabet = alphabet.replace(i, "") # skip에 포함되어 있는 글자는 지워버리기
for i in s:
char = alphabet.index(i) + index # index만큼 뒤의 알파벳 구하기
if(char >= len(alphabet)): # 만약 z를 넘어간다면
char = char % len(alphabet) # a부터 다시 시작
answer += alphabet[char]
return answer
ord()
, chr()
로 풀었는데 제출을 해도해도 계속 테스트케이스에서 실패가 나길래 결국 방법을 바꾸어 풀었다.string.replace()
를 이용하여 skip
에 있는 글자는 다 지워버리고 → 찾아야 하는 글자 찾기replace
를 쓸 때에는 꼭 변수에 할당해주기 ! ! ! (이거 때문에 또 10분정도 날려먹은듯)alphabet = alphabet.replace(i, "")
감탄한 다른 사람 코드… 와
ascii_lowercase
이란게 있는지 처음 알았다
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