[프로그래머스][파이썬] 모스부호 (1) - 문자열 (Level 0)

뻥튀기아이스크림·2025년 3월 16일
1
post-thumbnail

◽ 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120838

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

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'
    }
    
    trans_letter = letter.split(' ')
    for s in trans_letter:
        answer += morse[s]

    return answer
  • 모스부호 값들을 직접 딕셔너리에 저장하여 비교했다.

◽ 다른 사람 풀이

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[i] for i in letter.split(' ')])
  • 역시 딕셔너리를 통해 풀이했다.
  • 하지만 공백으로 나뉜 문자열을 리스트 컴프리헨션으로 바로 morse[i]로 받아 생성했다.

◽ 더 나아가기

  • join() 함수 내부에서 []로 한 번 더 감싸준 이유는 리스트 컴프리헨션 때문이다.
  • 대괄호를 사용하지 않으면 Generator가 들어가고 대괄호를 사용하면 Iterable 객체가 들어간다고 한다.
  • Iterable : 반복 가능한 객체로, 한 번에 모든 요소를 메모리에 로드한다.
  • Generator : yield를 사용하여 값을 한 번에 하나씩 반환하여, 메모리를 효율적으로 사용한다.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글