[99클럽 코테 스터디 31일차 TIL <문자열>]

서원준·2024년 6월 19일


31일차 - Decode the Message
성공코드

class Solution:
    def decodeMessage(self, key: str, message: str) -> str:
         # 치환 테이블을 만들기 위한 딕셔너리
        substitution_table = {}
        alphabet = "abcdefghijklmnopqrstuvwxyz"
        
        # key에서 첫 등장하는 각 문자를 순서대로 추출
        seen = set()
        current_char_index = 0
        
        for char in key:
            if char not in seen and char != ' ':
                substitution_table[char] = alphabet[current_char_index]
                current_char_index += 1
                seen.add(char)
        
        # 메시지 변환
        decoded_message = []
        for char in message:
            if char == ' ':
                decoded_message.append(' ')
            else:
                decoded_message.append(substitution_table[char])
        
        return ''.join(decoded_message)

문제 설명
주어진 key 문자열과 message 문자열이 있습니다. key 문자열은 암호 키를 나타내고, message 문자열은 암호화된 비밀 메시지를 나타냅니다. 메시지를 디코딩하기 위해 다음 단계를 따릅니다:

key 문자열에서 각 알파벳 소문자가 처음으로 나타나는 순서대로 치환 테이블을 만듭니다.
이 치환 테이블을 일반 영어 알파벳과 정렬합니다.
message의 각 문자를 치환 테이블을 사용하여 변환합니다. 공백(' ')은 그대로 둡니다.

문제 해결 과정

key 문자열에서 처음으로 나타나는 각 알파벳 소문자를 순서대로 추출하여 치환 테이블을 만듭니다.
이 치환 테이블은 각 문자를 일반 영어 알파벳(a, b, c, ...)에 순서대로 매핑합니다.

message 문자열을 순회하면서 각 문자를 치환 테이블을 사용하여 변환합니다.
공백(' ')은 변환하지 않고 그대로 둡니다.

profile
상상은 꿈을 현실로 만들어준다

0개의 댓글