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;
}
반응형