[프로그래머스 / Python] 모스부호 (1)

Kun-Woo Kim·2024년 12월 27일

알고리즘 공부

목록 보기
3/24
post-thumbnail

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/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'
}


포인트

  • 모스부호 해석: 주어진 letter 문자열에 있는 모스부호를 영어 소문자로 변환합니다.
  • 사전 활용: 모스부호와 그에 해당하는 영어 알파벳을 매핑하는 사전(dictionary)을 사용하여 효율적으로 문자를 해석합니다.
  • 문자열 분할: 모스부호가 공백으로 구분되어 있으므로, split 함수를 사용하여 입력된 문자열을 모스부호 단위로 분리합니다.

내 답안

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'
    }
    
    # 문자열을 공백을 기준으로 분리
    splited_letter = letter.split(" ")
    
    # 분리된 모스부호를 영문자로 변환하여 결과 문자열에 추가
    for code in splited_letter:
        answer += morse[code]
    
    return answer

결론 및 느낀점

이 문제를 해결하면서 모스부호와 같은 간단한 암호화 기법을 프로그래밍을 통해 어떻게 해석할 수 있는지 배울 수 있었습니다. 문자열을 처리하고, 사전을 사용하여 각 심볼을 해당하는 값으로 매핑하는 과정은 다른 많은 프로그래밍 문제에서도 유용하게 활용될 수 있습니다. 또한, 이 과제를 통해 문자열 분할과 반복문을 사용하는 기술을 실습함으로써 Python에서 문자열을 다루는 능력을 향상시킬 수 있었습니다.

profile
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, Next.js 14, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.

0개의 댓글