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)