#내코드
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 decodeMorse(data):
data = data.split(' ')
buff = list()
result = list()
for word in data:
buff.append(word.split(' '))
for word in buff:
temp = list()
for letter in word:
temp.append(dic.get(letter))
result.append("".join(temp))
result = " ".join(result)
print(result)
내 코드보다 정답코드가 훨씬 깔끔해서 비교해보게 되었다.
- 나는 split으로 나눈 결과를, 임시 리스트에 저장시키고 join으로 합치고 복잡하게 짰다. 임시리스트도 buff와 temp로 두개나 되었다. 하다보니 엑셀함수를 여러개 겹쳐쓸 때 처럼 복잡한 느낌이 들었다.
- 정답코드에서는 split으로 나눈 결과를 따로 임시 리스트에 저장하지 않았다.
split한 결과를 바로 for문에 사용했기 때문이다.
또, 공백도 단어가 끝날 때 직접 넣어주어 임시리스트가 하나도 필요하지 않았다.
#정답
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)
'공부기록 > Python' 카테고리의 다른 글
[Python] yield 이용해 Progress bar 만들기 (0) | 2020.05.25 |
---|---|
파이썬 정규표현식 이용해 문장부호 지우기 (2) | 2020.05.21 |
jupyter notebook 코드 티스토리에 업로드하기 (0) | 2020.05.20 |
점프투파이썬 종합문제 Q13 DashInsert (0) | 2020.05.14 |