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)
마무리
이제 모스 부호 메시지를 해독하는 프로그램이 완성되었습니다! 각 단계를 순서대로 따라가며 코드를 작성하니 더 쉽게 이해할 수 있었을 거라 생각합니다. 앞으로도 다양한 문제를 해결하며 코딩 실력을 키워 나가길 응원합니다!
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 7일차 TIL (0) | 2024.11.04 |
---|---|
99클럽 코테 스터디_4기 6일차 TIL (3) | 2024.11.03 |
99클럽 코테 스터디_4기 4일차 TIL (0) | 2024.10.31 |
99클럽 코테 스터디_4기 3일차 TIL (0) | 2024.10.30 |
99클럽 코테 스터디_4기 2일차 TIL (1) | 2024.10.29 |