From 29fcc2396107abb43de56813f71a65ef6d1332a7 Mon Sep 17 00:00:00 2001 From: Robin Yoon Date: Wed, 1 Apr 2026 09:54:04 +0900 Subject: [PATCH 1/5] best time to buy and sell stock solution --- best-time-to-buy-and-sell-stock/robinyoon-dev.js | 1 - 1 file changed, 1 deletion(-) diff --git a/best-time-to-buy-and-sell-stock/robinyoon-dev.js b/best-time-to-buy-and-sell-stock/robinyoon-dev.js index 7e8d095bc..aefc150dd 100644 --- a/best-time-to-buy-and-sell-stock/robinyoon-dev.js +++ b/best-time-to-buy-and-sell-stock/robinyoon-dev.js @@ -23,7 +23,6 @@ var maxProfit = function (prices) { return maxProfit; }; - // -----아래는 이전에 작성한 답안입니다. // /** // * @param {number[]} prices From 823887cd5eb30f94a8dc9f703df55812eb0fce79 Mon Sep 17 00:00:00 2001 From: Robin Yoon Date: Wed, 1 Apr 2026 13:39:54 +0900 Subject: [PATCH 2/5] group anagrams solution --- group-anagrams/robinyoon-dev.js | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 group-anagrams/robinyoon-dev.js diff --git a/group-anagrams/robinyoon-dev.js b/group-anagrams/robinyoon-dev.js new file mode 100644 index 000000000..014866a87 --- /dev/null +++ b/group-anagrams/robinyoon-dev.js @@ -0,0 +1,45 @@ +/** + * @param {string[]} strs + * @return {string[][]} + */ + +// 문제는 풀었으나 시간 복잡도 측면에서 효율이 너무 떨어지는 풀이 방법.... +var groupAnagrams = function (strs) { + let outputArr = []; + let countArr = []; + + const A_ASCII = 'a'.charCodeAt(0); + const Z_ASCII = 'z'.charCodeAt(0); + + let charCounts = Z_ASCII - A_ASCII + 1; + let charCountArr = new Array(charCounts).fill(0); //인덱스가 알파벳을 나타냄. + + for (str of strs) { + let strCountString = getStrCountString(str); + + let hasSameCountIndex = countArr.findIndex((item) => item === strCountString); + + if (hasSameCountIndex !== -1) { + outputArr[hasSameCountIndex].push(str); + } else { + countArr.push(strCountString); + + outputArr.push([str]); + } + } + + return outputArr; + + function getStrCountString(str) { + let tempArr = [...charCountArr]; + + for (char of str) { + let charAscii = char.charCodeAt(0); + let charIndex = charAscii - A_ASCII; + tempArr[charIndex] += 1; + } + return tempArr.join(','); + } +}; + + From e7a77c7befe1aa51724ad98358cfb81908d73e5c Mon Sep 17 00:00:00 2001 From: Robin Yoon Date: Fri, 3 Apr 2026 14:29:19 +0900 Subject: [PATCH 3/5] implement trie prefix tree solution --- implement-trie-prefix-tree/robinyoon-dev.js | 66 +++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 implement-trie-prefix-tree/robinyoon-dev.js diff --git a/implement-trie-prefix-tree/robinyoon-dev.js b/implement-trie-prefix-tree/robinyoon-dev.js new file mode 100644 index 000000000..ca89a183e --- /dev/null +++ b/implement-trie-prefix-tree/robinyoon-dev.js @@ -0,0 +1,66 @@ +var TrieNode = function () { + this.children = {}; + this.isEnd = false; +} + +var Trie = function () { + this.root = new TrieNode(); +}; + +/** + * @param {string} word + * @return {void} + */ +Trie.prototype.insert = function (word) { + let currentNode = this.root; + for (let i = 0; i < word.length; i++) { + let char = word[i]; + if (!currentNode.children[char]) { + currentNode.children[char] = new TrieNode(); + + } + currentNode = currentNode.children[char]; + } + + currentNode.isEnd = true; +}; + +/** + * @param {string} word + * @return {boolean} + */ +Trie.prototype.search = function (word) { + let currentNode = this.root; + for (let i = 0; i < word.length; i++) { + let char = word[i]; + if (!currentNode.children[char]) { + return false; + } + currentNode = currentNode.children[char]; + } + return currentNode.isEnd; +}; + +/** + * @param {string} prefix + * @return {boolean} + */ +Trie.prototype.startsWith = function (prefix) { + let currentNode = this.root; + for (let i = 0; i < prefix.length; i++) { + let char = prefix[i]; + if (!currentNode.children[char]) { + return false; + } + currentNode = currentNode.children[char]; + } + return true; +}; + +/** + * Your Trie object will be instantiated and called as such: + * var obj = new Trie() + * obj.insert(word) + * var param_2 = obj.search(word) + * var param_3 = obj.startsWith(prefix) + */ From 75a2e545d6426c54edd1c32e9cd50f147fbff3b4 Mon Sep 17 00:00:00 2001 From: Robin Yoon Date: Sat, 4 Apr 2026 11:49:26 +0900 Subject: [PATCH 4/5] word break solution --- word-break/robinyoon-dev.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 word-break/robinyoon-dev.js diff --git a/word-break/robinyoon-dev.js b/word-break/robinyoon-dev.js new file mode 100644 index 000000000..be9b73f53 --- /dev/null +++ b/word-break/robinyoon-dev.js @@ -0,0 +1,27 @@ +// 문풀 해설 보고 푼 문제 +/** + * @param {string} s + * @param {string[]} wordDict + * @return {boolean} + */ +var wordBreak = function (s, wordDict) { + + const dp = new Array(s.length + 1).fill(false); + dp[0] = true; + + let maxLength = 0; + for (let word of wordDict) { + maxLength = Math.max(maxLength, word.length); + } + + for (let i = 1; i <= s.length; i++) { + for (let j = Math.max(0, i - maxLength); j < i; j++) { + if (dp[j] && wordDict.includes(s.substring(j, i))) { + dp[i] = true; + break; + } + } + } + + return dp[s.length]; +}; From 367924409a15f9794cefbc693af9137fcbb9ebb4 Mon Sep 17 00:00:00 2001 From: Robin Yoon Date: Sat, 4 Apr 2026 11:51:18 +0900 Subject: [PATCH 5/5] chore: add comment --- implement-trie-prefix-tree/robinyoon-dev.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/implement-trie-prefix-tree/robinyoon-dev.js b/implement-trie-prefix-tree/robinyoon-dev.js index ca89a183e..20f86d866 100644 --- a/implement-trie-prefix-tree/robinyoon-dev.js +++ b/implement-trie-prefix-tree/robinyoon-dev.js @@ -1,3 +1,5 @@ +// 문제풀이 해설 보고 푼 문제입니다. + var TrieNode = function () { this.children = {}; this.isEnd = false;