TODAY TIL

오늘은 모스 부호를 원래의 문자로 해독하는 프로그램을 만들어 보겠습니다. 모스 부호는 짧은 신호와 긴 신호(‘.’, ‘-’)로 이루어져 있으며, 각 문자와 숫자를 모스 부호로 나타낼 수 있습니다. 예를 들어, ‘A’는 .-로, 숫자 ‘1’은 .----로 표기됩니다.

이 문제를 해결하기 위해 단계별로 접근해 보겠습니다.

문제 이해하기

  • 입력: 모스 부호로 변환한 메시지와 원래 문자열의 길이 NN이 주어집니다. 예를 들어, 모스 부호 .... . .-.. .-.. ---가 입력으로 주어지면 우리는 이것을 HELLO로 해독해야 합니다.
  • 출력: 주어진 모스 부호 메시지를 원래의 문자로 해독하여, 공백 없이 출력해야 합니다.

해결 순서

1단계: 모스 부호와 문자의 매핑 사전 만들기

모스 부호를 해독하기 위해서는 모스 부호와 알파벳(또는 숫자) 간의 변환이 필요합니다. 이를 위해 morse_code_dict라는 사전을 만들어 각 모스 부호와 해당되는 문자를 연결합니다.

morse_code_dict = {
    ".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E",
    "..-.": "F", "--.": "G", "....": "H", "..": "I", ".---": "J",
    "-.-": "K", ".-..": "L", "--": "M", "-.": "N", "---": "O",
    ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T",
    "..-": "U", "...-": "V", ".--": "W", "-..-": "X", "-.--": "Y",
    "--..": "Z", ".----": "1", "..---": "2", "...--": "3", "....-": "4",
    ".....": "5", "-....": "6", "--...": "7", "---..": "8", "----.": "9",
    "-----": "0", "--..--": ",", ".-.-.-": ".", "..--..": "?", "---...": ":",
    "-....-": "-", ".--.-.": "@"
}

 

2단계: 입력 받기

문제에서는 두 가지 입력이 주어집니다.

  • 첫 번째 줄은 변환할 원래 문자열의 길이인 NN (사용하지 않으므로 무시 가능)
  • 두 번째 줄은 모스 부호 메시지입니다.
N = int(input())  # 문자열의 길이 (사용하지 않음)
morse_code_message = input().split()  # 공백으로 구분된 모스 부호 메시지

 

split() 함수를 사용하여 모스 부호 메시지를 공백 기준으로 나누어 각 모스 부호가 리스트에 저장되도록 합니다.

3단계: 모스 부호 해독하기

모스 부호 메시지에 있는 각 모스 부호를 순서대로 morse_code_dict 사전을 통해 해독하여 원래의 문자로 변환합니다.

 

decoded_message = ""
for code in morse_code_message:
    decoded_message += morse_code_dict[code]  # 사전에서 해당 문자 찾기

 

이 과정에서는 for 반복문을 사용하여 각 모스 부호를 사전에서 찾아 decoded_message에 추가합니다.

4단계: 결과 출력

해독된 문자열 decoded_message를 출력합니다.

print(decoded_message)

 

전체 코드

아래는 위의 단계를 모두 포함한 전체 코드입니다

# 모스 부호와 문자 매핑 사전 만들기
morse_code_dict = {
    ".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E",
    "..-.": "F", "--.": "G", "....": "H", "..": "I", ".---": "J",
    "-.-": "K", ".-..": "L", "--": "M", "-.": "N", "---": "O",
    ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T",
    "..-": "U", "...-": "V", ".--": "W", "-..-": "X", "-.--": "Y",
    "--..": "Z", ".----": "1", "..---": "2", "...--": "3", "....-": "4",
    ".....": "5", "-....": "6", "--...": "7", "---..": "8", "----.": "9",
    "-----": "0", "--..--": ",", ".-.-.-": ".", "..--..": "?", "---...": ":",
    "-....-": "-", ".--.-.": "@"
}

# 입력 받기
N = int(input())  # 문자열의 길이 (사용하지 않음)
morse_code_message = input().split()  # 공백으로 구분된 모스 부호 메시지

# 모스 부호 해독
decoded_message = ""
for code in morse_code_message:
    decoded_message += morse_code_dict[code]  # 사전에서 변환

# 결과 출력
print(decoded_message)

 

마무리

이제 모스 부호 메시지를 해독하는 프로그램이 완성되었습니다! 각 단계를 순서대로 따라가며 코드를 작성하니 더 쉽게 이해할 수 있었을 거라 생각합니다. 앞으로도 다양한 문제를 해결하며 코딩 실력을 키워 나가길 응원합니다!

+ Recent posts