[자바스크립트/javascript] 프로그래머스 : 모스부호(1) (Lv.0)

요즘 코딩테스트 문제를 안 푼 지 너무 오래됐다. 하루에 한 문제 이상은 꼭 풀어야겠다.

그리고 쉬운 문제라도 한 문제씩 따로 포스팅을 하는 게 나중에 찾아보기 편한 것 같다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/120838?language=javascript 

function solution(letter) {
    const 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 answer = []
    letter = letter.split(' ')
    for (i of letter) {
        answer.push(morse[i])
    }
    return answer.join('')
}

나는 for문과 join을 이용하여 하였지만 다른 사람들의 풀이를 보니 reduce를 이용하여 더 짧고 간단하게 풀 수 있었다.

 

function solution(letter) {
    return letter.split(' ').reduce((prev, curr) => prev + morse[curr], '')
}

스플릿으로 나누고 리듀스를 이용하여 for문과 join을 쓰지 않고도 바로 답을 출력할 수 있다..

 

map이랑 join을 같이 이용해도 됨

comment