leetCode 문제 풀이 804. Unique Morse Code Words (JS)

devmomo·2021년 3월 15일
0

알고리즘

목록 보기
38/52
post-thumbnail

804. Unique Morse Code Words

문제
알파벳 순으로 주어진 모스코드로 주어진 배열 words 안의 원소들을 변환했을 때, 중복되지 않은 모스코드의 수를 return 하는 함수 만들기

조건
1. words의 길이는 최대 100
2. words[i]는 1이상 12이하
3. words[i]는 소문자로만 이루어져 있음

문제

/**
 * @param {string[]} words
 * @return {number}
 */
var uniqueMorseRepresentations = function(words) {
    const MORSE_LETTERS ={
    "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 splitWords = words.map((data)=>[...data]);
const result = [];
for(let i = 0 ; i < splitWords.length; i++){
    let temp = splitWords[i].map((data)=>MORSE_LETTERS[data])
    result.push(temp.join(''));
}
return new Set(result).size;
};

다른풀이

/**
 * @param {string[]} words
 * @return {number}
 */
var uniqueMorseRepresentations = function(words) {
        const morseCode = {
        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 num = new Set()
    for (let item of words) {
        let str = '';
        for (let i = 0; i < item.length; i++) {
            str += morseCode[item[i]]
        }
        num.add(str)
    }
    return num.size
};

생성자를 통해 Set을 만들고, ** set 메소드를 활용해서 해결 (add, size)

profile
FE engineer

0개의 댓글