[프로그래머스] 모스부호(1).JS

ungnam·2023년 5월 31일

programmers level0

목록 보기
5/29

https://school.programmers.co.kr/learn/courses/30/lessons/120838

나의 풀이

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'
    };
    const answer = [];
    const letterArr = letter.split(" ");
    for (const letter of letterArr) {
        answer.push(morse[Object.keys(morse).find((v) => v === letter)]);
    }
    return answer.join("");
}

morse 객체에서 키 전체를 가져와 letter와 비교한 후, 대응되는 값을 배열에 집어넣는 방식으로 풀이함
❗ 딱 봐도 불필요한 작업이 많아 보인다.

참고할 만한 풀이

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'
    };
    const answer = [];
    return letter.split(" ").reduce((acc, cur) => acc + morse[cur], "");
}

✔ 확실히 reduce를 쓰니 코드가 간결해지고 직관적으로 변한 게 눈에 보인다.

profile
꾸준함을 잃지 말자.

0개의 댓글