⌨️ 프로그래머스/코딩테스트 입문

[프로그래머스] #34 모스부호(1) 🖥️ | JS

하나둘세현 2024. 6. 25. 17:32
728x90

문제

머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.모스부호는 다음과 같습니다.

해결 과정

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 removeGap = letter.split(' '); // 공백 제거 -> 배열로 저장됨
    let answer = [];
    
    for(let i = 0; i < removeGap.length; i++) {
        answer += morse[removeGap[i]];
    }
 
    return answer;
}

 

split함수를 이용해서 letter의 공백을 제거해 removeGap변수에 지정했다.

그리고 for문을 이용하여 removeGap의 길이만큼 반복을 했을때

answer에 저장하게 했다.

 

그렇다면 왜? morse[removeGap[i]]로 했냐면

 

예시) let morse = {'가':1}일때,

m2  = ['가']이다. m2의 0번째 인덱스는 가를 의미한다.

그래서  morse[removeGap[i]작성했다.

 

새롭게 알게된 점

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

 

letter.spilt(' ')을 이용하여 공백을 기준으로 배열을 만들었다.

그 뒤 map을 이용하여 morse에 해당하는 알파벳을 반환하고 join으로 합쳤다.

728x90