본문 바로가기
Javascript/코딩테스트-연습

[JavaScript] 모스부호(1) - 프로그래머스

by BeomBe 2024. 3. 26.
반응형

문제설명

입력된 모스부호를 제시된 모스부호에 맞게 번역하는 문제

 

나의 풀이

입력받은 letter를 스페이스에 맞춰 split 하고 map으로 해당되는 값을 찾은 후에 join으로 합쳐주었다.

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.split(' ').map((v) => morse[v]).join('');
  
    return answer;
}

 

 

대부분 비슷한 풀이였고 reduce를 사용한다면 아래처럼 된다.

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

 

For문을 사용해도 되는 문제이다.

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 input = letter.split(' ')
    let answer = ''
    for (const i of input) {
        answer += morse[i]
    }
    return answer
}

 

또는 아래처럼 진행해도 된다.

function solution(letter) {
    let answer = '';

    let messages = letter.split(" ");

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

    for(let i = 0 ; i < messages.length; i++) {
        answer += morse[messages[i]];
    }

    return answer;
}
반응형