Javascript/코딩테스트-연습

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

BeomBe 2024. 3. 26. 07:38
반응형

문제설명

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

 

나의 풀이

입력받은 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;
}
반응형