https://leetcode.com/problems/decode-the-message/
주어진 문자열 key와 message는 각각 암호화 키와 비밀 메시지를 나타냅니다. message를 해독하기 위한 단계는 다음과 같습니다:
- key에서 처음 등장하는 모든 26개의 소문자 영어 알파벳을 사용하여 대체 테이블의 순서를 정합니다. 이는 key의 각 문자가 알파벳의 어떤 문자로 변환될지 결정합니다.
- 대체 테이블을 정렬된 영어 알파벳과 맞춥니다. 즉, key의 첫 번째 고유 문자는 'a'에, 두 번째 고유 문자는 'b'에 매핑됩니다. 이렇게 해서 'z'까지 매핑합니다.
- message의 각 문자는 이 대체 테이블을 사용하여 변환됩니다.
- 공백 문자 ' '는 그대로 유지됩니다.
예를 들어, 주어진 key = "happy boy"인 경우 (실제 key는 알파벳의 각 문자가 적어도 한 번씩 등장해야 합니다), 부분 대체 테이블은 ('h' -> 'a', 'a' -> 'b', 'p' -> 'c', 'y' -> 'd', 'b' -> 'e', 'o' -> 'f')와 같습니다.
이 대체 테이블을 사용하여 message를 해독한 결과를 반환합니다.

풀이
class Solution:
def decodeMessage(self, key: str, message: str) -> str:
# 매핑 딕셔너리를 생성
mapping = {}
current_char = 'a'
for char in key:
# 공백이 아니고 아직 매핑되지 않은 문자일 경우
if char != ' ' and char not in mapping:
mapping[char] = current_char
current_char = chr(ord(current_char) + 1)
if current_char > 'z': # 'z'를 초과하면 멈춤
break
# 매핑을 사용하여 메시지를 해독
decoded_message = []
for char in message:
if char == ' ':
decoded_message.append(' ')
else:
decoded_message.append(mapping[char])
return ''.join(decoded_message)
'Algorithm > 릿코드' 카테고리의 다른 글
99클럽 코테 스터디 23일차 2089. Find Target Indices After Sorting Array 배열 정렬 후 타겟 인덱스 찾기 (0) | 2024.06.21 |
---|---|
99클럽 코테 스터디 22일차 2733. Neither Minimum nor Maximum (0) | 2024.06.20 |
99클럽 코테 스터디 20일차 1528. Shuffle String (0) | 2024.06.19 |
99클럽 코테 스터디 19일차 1773. Count Items Matching a Rule (0) | 2024.06.17 |
99클럽 코테 스터디 18일차 2942. Find Words Containing Character (0) | 2024.06.16 |