[programmers] 모스부호(1), 120838

    반응형

    문제 설명

    머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
    모스부호는 다음과 같습니다.

    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'
    }

     

    더보기

    제한사항

    1 ≤ letter의 길이 ≤ 1,000

    - return값은 소문자입니다.

    - letter의 모스부호는 공백으로 나누어져 있습니다.

    - letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.

    - 해독할 수 없는 편지는 주어지지 않습니다.

    - 편지의 시작과 끝에는 공백이 없습니다.

     

    입출력 예

    입출력 예제

    입출력 예 설명

    입출력 예 #1

    • .... = h
    • . = e
    • .-.. = l
    • .-.. = l
    • --- = o
    • 따라서 "hello"를 return 합니다.

    입출력 예 #2

    •  .--. = p
    • -.-- = y
    • - = t
    • .... = h
    • --- = o
    • -. = n
    • - 따라서 "python"을 return 합니다.

    풀이 #1

    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'}
        
        letter = letter.split()
        answer = []
        for i in range(len(letter)):
            for key, value in morse.items():
                if key == letter[i]:
                    answer.append(value)
        return ''.join(answer)

    풀이 #1 설명

    • letter = letter.split() : letter를 띄어쓰기 기준으로 잘라서 list에 넣음
    • morse의 key == letter[i] 이면 answer에 value 추가
    • 리스트를 문자열로 변환하기 위해 ''.join() 사용

    풀이 #2

    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())

     

    풀이 #2 설명

    • 풀이 #1 코드를 한줄로 불러옴
    • morse의 key를 letter[i]로 받아서, value값 반환 후 문자열로 정렬
    반응형

    댓글