본문 바로가기

알고리즘/프로그래머스 문제풀이

프로그래머스 둘만의 암호(lv1, python)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/155652

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 접근

  • 주어진 규칙에 맞춰 문자열 s를 변형시켜서 return해주면 되는 문제
  • index만큼 뒤에 있는 알파벳이 무슨 뜻이지? 했더니 그냥 알파벳 순서a,b,c,d....을 의미하는 것이었음
  • alpha = abcdefghijklmnopqrstuvwxyz를 선언하고 skip에 있는 문자들을 제거
  • s에 있는 문자를 alpha에서의 index에 자연수로 주어진 index값을 더해서 새로운 문자열을 만들어주면 됨

정답 코드

def solution(s, skip, index):
    answer = ''
    alpha = "abcdefghijklmnopqrstuvwxyz"
    
    for ch in skip:
        if ch in alpha:
            alpha = alpha.replace(ch, "")
            
    for i in s:
        change = alpha[(alpha.index(i)+index) % len(alpha)]
        answer += change
    return answer

그냥 index를 더하면 index out 에러가 뜨기 때문에 alpha 길이만큼 나눈 나머지를 이용해 index를 순환해서 참조하도록 함