[Python] 코딩 도장 - 모스부호 해독
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 모스부호 해독] - Lv.2
문자열 형식으로 입력 받은 모스코드(dot: . dash:-)를 해독하여 영어 문장으로 출력하는 프로그램을 작성하시오.
글자와 글자 사이는 공백 하나, 단어와 단어 사이는 공백 두개로 구분한다.
예를 들어 다음 모스부호는 “he sleeps early”로 해석해야 한다.
.... . ... .-.. . . .--. ... . .- .-. .-.. -.--
모스부호 규칙 표
문자 | 부호 | 문자 | 부호 |
---|---|---|---|
A | .- | N | -. |
B | -… | O | — |
C | -.-. | P | .–. |
D | -.. | Q | –.- |
E | . | R | .-. |
F | ..-. | S | … |
G | –. | T | - |
H | …. | U | ..- |
I | .. | V | …- |
J | .— | W | .– |
K | -.- | X | -..- |
L | .-.. | Y | -.– |
M | – | Z | –.. |
출처: https://codingdojang.com/scode/469?answer_mode=hide
[풀이]
mos_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'
}
def mos():
a = input().split(" ")
c = ""
for i in a:
try:
c += mos_dict[i]
except:
c += " "
return print(c)
mos()
.... . ... .-.. . . .--. ... . .- .-. .-.. -.--
he sleeps early
모스부호 규칙 표를 사전 형태로 만들어 두어 입력한 모스부호에 따라 변환하였다.
글자와 글자 사이는 공백 하나이므로 split()
에서 공백 하나를 사용하였다.
이 경우 공백 2개인 경우가 같이 분리되므로 변환 시 예외 처리로 공백을 더해주었다.
[추천 풀이]
dic = {
'.-':'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'
}
def morse(src):
result = []
for word in src.split(" "):
for char in word.split(" "):
result.append(dic[char])
result.append(" ")
return "".join(result)
print(morse('.... . ... .-.. . . .--. ... . .- .-. .-.. -.--'))
HE SLEEPS EARLY
이 분은 공백 2개인 경우와 한 개인 경우를 분리해서 for문 처리하는 방식을 사용했다.
Leave a comment