본문 바로가기
프론트엔드로 가는 길/프로그래머스

31. 프로그래머스_모스부호(1)

by woody-j 2023. 1. 30.

코딩일지

작성자
  최주희 작성일자 2022.01.30
세부 코딩 내용 모스부호
활동 기간 2022.01. 30
문제 머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 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'
}
나의 풀이
function solution(letter) {
    let 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'
}
   let morseLetter=""
    let morseSymbol=letter.split(' ');
 morseSymbol.map((a)=>{
morseLetter+=(morse[a])
 })
return morseLetter
} 

결과
통과
다른 풀이 function solution(letter) {
    return letter.split(' ').reduce((prev, curr) => prev + morse[curr], '')
}

  return letter.split(' ').map(v=>morse[v]).join('');

해석
의문 : 왜? join(‘’)이 가능한거지..?
아까 내가 썼을때는 안됐는데!!
이유는 {morse[a]} 이렇게 morse에 중괄호를 해줘버렸다.
키워드 코딩내용 생각

1. 필요한 조건 정리


  • 모스부호
  • letter를 분리 시킨 배열
  • 모스부호를 변경시킨 문자




2. 풀이단계 정리


  • Letter를 분리시켜 배열로 만든다
  • 분리 시킨 배열을 map을 이용해 모스부호의 value값을 가지고 와서 문자를 합친다.
항상 사용하던 for문을 사용할까하다 이번에는 map을 사용했다. 처음에 join함수를 사용하여 문자를 합치려고 했는데 왜인지 모르겠는데 오류가 떴다. morse[a]를 중괄호{}로 감쌌기 때문이었다.
이런 기본에서 생긴 오류 때문에 문제를 푸는데 시간을 소요했다는 게 화가났다. 항상 느끼는 거지만 다양한 함수를 아는 것도 중요하지만 기본이 정말 중요한 것 같다.