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