반응형
코딩테스트 모스부호 ( 1 )
문제 설명
출력 예시
모스 부호를 읽어 영어로 해독해야 하는 문제 입니다.
모스 부호 객체가 있으니 이걸 이용하여 문제를 풀어보겠습니다!
const 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'
}
var answer = '';
const key = Object.keys(morse);
const value = Object.values(morse);
const letterSpl = letter.split(' ');
해독해야할 변수 letter와 이용해야 할 모스부호 변수 morse 가 있습니다.
문제풀이를 쉽게 하기위해 morse 객체를 키와 값으로 나눴고 letter를 해독하기 쉽게 띄어쓰기 기준으로
split을 이용하여 나눠줬습니다.
바로 가보겠습니다!
const 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'
}
var answer = '';
const key = Object.keys(morse);
const value = Object.values(morse);
const letterSpl = letter.split(' ');
letterSpl.forEach(e => {
for(let i=0; i<key.length; i++){
if(e == key[i]){
answer += value[i]
}
}
});
//answer = "hello"
forEach를 사용하여 letterSpl을 요소마다 조건식을 반복 했습니다.
요소를 morse의 키와 비교하여 같다면 키의 값을 answer에 추가해줬습니다.
키와 값은 같은 인덱스를 가지고 있다는 점을 이용 했습니다!
하지만 고수는 map을 이용하여 한줄로 쓰더라구요...
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('');
}
제 긴 코드가 이 사람은 이 한줄로 풀더라구요..
코드를 보고 이해는 했지만
저는 아직 멀었습니다.