코딩테스트/코딩 테스트 입문
모스부호
kimyongjun0129
2025. 3. 11. 20:55
# 내 풀이
def solution(letter):
answer = []
morse = {
'.-':'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'
}
letter = letter.split(" ")
for word in letter:
answer.append(morse[word])
return "".join(answer)
- split(" ") : 문자열을 공백을 기준으로 나누어 리스트로 반환한다.
- for word in letter : letter은 literable이므로 하나씩 꺼내서 word에 넣을 수 있다.
- morse[word] : dict에 key를 통해 값에 접근 할 수 있다.
- answer.append() : list 메서드인 append를 이용하여, 맨 마지막에 요소 추가
- "".join(answer) : answer 리스트를 문자열로 변환 후, 반환
# GPT 풀이
def solution(letter):
morse = {
'.-':'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'
}
return ''.join(morse[code] for code in letter.split())
- 제너레이터 표현식을 이용하여, 한줄로 간단하고 효율적으로 표현
# 리스트 컴프리헨션 표현식
''.join([morse[w] for w in letter.split()])
- list를 먼저 생성한 후, join으로 문자열을 합친다.
# 제너레이터 표현식
''.join(morse[w] for w in letter.split())
- list를 생성하지 않고 바로 문자열을 합친다.
- 이 경우에는 제너레이터 표현식이 메모리 사용 면에서 더 효율적이다.