프로그래머스 문제 풀기

프로그래머스 문제 풀기 - 모스부호(1)

유니유뉘 2023. 3. 22. 14:18
728x90

프로그래머스 문제 풀기 - 모스부호 (1)

 

문제

모스부호로 된 변수 letter를 영어 소문자 문자열로 반환하는 것이다.

morse 부호가 담긴 배열이 주어지고 letter 변수에는 ".... . .-.. .-.. ---"가 담겨온다.

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

이 문제에는 map split그리고 join 함수를 사용했다.

 

그렇다면 첫 번째로 해야 할 것은

1. 변수 letter에 담긴 데이터들을 나누기

자세히 보면 공백으로 구분되어 있는데 공백을 기준으로 하나씩 나누어줄 것이다. 

let array = letter.split(' ');

split를 사용해 공백을 기준으로 문자열을 나누었다. => ["....",".",".-..",".-..","---"];

 

2. key : value 이용하기

return morse["...."]

 

위 코드를 입력하면 "h"가 반환되는 걸 알 수 있다. (morse를 자세히 보면 key : value로 이루어져 있다.)

 

3. map 함수를 이용해 morse[array 안의 요소] 넣고 반환하기

map를 이용하면 (x, i) 중에서 i 두 번째 인자로 쉽게 배열의 요소를 하나씩 돌릴 수 있다. 

let array = letter.split(' ');

return array.map((x,i)=> morse[array[i]]);

array.map((x, array의 길이)) => morse[array[0 ~ array 변수 길이만큼 반복]]);key 값 = morse["...."] / value 값 = "h"

이렇게 하면 ' "h", "e", "l", "l", "o" ' 가 반환된다.

 

4. 하나의 문자열로 합쳐주기

하나로 합쳐주기 위해 join 함수를 이용한다.

return array.map((x,i)=> morse[array[i]]).join("");

위 코드를 통해 letter의 모스부호를 해석한 "hello"가 반환된다.

전체적인 코드

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 array = letter.split(' ');
    return array.map((x,i)=> morse[array[i]]).join("");
}

 

 

반응형