코딩,해볼까

08.18. 프로그래머스 : 둘만의 암호 본문

Back/TIL

08.18. 프로그래머스 : 둘만의 암호

떠굥 2023. 8. 19. 16:10

🔎 둘만의 암호

문제 규칙에 따라 해석된 암호를 return 하자.

▶ 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다.
▶ index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다.
▶ skip에 있는 알파벳은 제외하고 건너뜁니다.

1. 알파벳 배열을 만든 후 - skip 해준다.
2. 주어진 문자열 s의 알파벳의 인덱스를 구한다.
3. 만약 s의 인덱스 + 주어진 index > 알파벳 배열의 길이 라면 두 수의 차를 구해서 인덱스로 사용한다.
4. 각 글자들을 answer 에 + 해서 출력한다.

💡 문제풀이#1

def solution(s, skip, index):
    answer = ''
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    alpha2 = [] #alpha - skip
    for i in alpha:
        alpha2.append(i)
    
    for i in skip:
        alpha2.remove(i)
    
    alpha2_length = len(alpha2)

		# s = "aukks"	"wbqd"	5	"happy"
    for i in s:
        idx = alpha2.index(i)
        plus_idx = idx + index
                  
        if plus_idx < alpha2_length:
            answer += alpha2[plus_idx]
        
        else:
            while plus_idx >= alpha2_length:
                plus_idx -= alpha2_length
            answer += alpha2[plus_idx]

    return answer

💡 문제풀이#2

def solution(s, skip, index):
    answer = ''
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    alpha2 = []
    for i in alpha:
        alpha2.append(i)
    
    for i in skip:
        alpha2.remove(i)
    
    alpha2_length = len(alpha2)

    for i in s:
        idx = alpha2.index(i) + index
        divide = idx % alpha2_length
        answer += alpha2[divide]

    return answer

💡 다른 사람의 풀이#1 : ascii_lowercase

from string import ascii_lowercase

alpha = list(ascii_lowercase) #아스키코드로 alphabet 배열 만들기
# print(alpha)이런 방법도 있다~
def solution(s, skip, index):
    answer = ''
    for sk in skip:
        alpha.remove(sk)
    for str_s in s:
        idx_s = alpha.index(str_s)
        answer += alpha[(idx_s + index) % len(alpha)]
    return answer

💡 다른 사람의 풀이#2 : 유니코드

유니코드 a = 97 z = 122 를 이용해서 풀이하였다.
▶ ord() 유니코드 문자로 변경
▶ chr() 유니코드 문자를 숫자로 변경
def solution(s, skip, index):
    answer = ''
    arr = [chr(i) for i in range(97, 123) if chr(i) not in skip] * 10
    # print(arr, len(arr))
    for i in s:
        answer += arr[arr.index(i) + index]
    return answer
Comments