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를 생성하지 않고 바로 문자열을 합친다.
  • 이 경우에는 제너레이터 표현식이 메모리 사용 면에서 더 효율적이다.