프로그래머스 코딩테스트/Python

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

Coding-Su 2024. 7. 8. 19:34
728x90

문제

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

정답

def solution(s, skip, index):
    answer = ''
    sNum = [ord(s[i]) for i in range(0, len(s))]
    skipNum = [ord(skip[i]) for i in range(0, len(skip))]
    
    num = []
    for i in range(0, len(sNum)):
        num = []
        for j in range(1, index+1):
            if sNum[i]+j >= 123:
                num.append(sNum[i]+j - 26)
            else:
                num.append(sNum[i]+j)
        n = 0
        k = index
        while n < k:
            if num[n] in skipNum:
                num.append(num[-1]+1)
                k+=1
            n+=1 
            if num[-1] >= 123:
                num[-1] -= 26
        
        answer += chr(num[-1])
    
    return answer

문자로 비교하는것보다 아스키코드를 이요하여 숫자로 비교하는것이 좋을것 같아 모두 숫자로 바꾸어주었습니다.

그리고 1씩 더하면서 z이면 a로 바뀔수 있도록 if문을 작성해 주었고, 만약 skip에 숫자가 있다면 index 값이 저장되어 있는 k를 증가시켜주어 다음 문자에 접근할수 있도록 풀어주었습니다.

728x90