From e3618382c527eb40ae732ea1295ad56eb8b729df Mon Sep 17 00:00:00 2001 From: hoyeongkwak Date: Tue, 29 Apr 2025 22:17:30 +0900 Subject: [PATCH 1/2] WEEK5 solutions --- .../hoyeongkwak.ts | 20 +++++++ group-anagrams/hoyeongkwak.ts | 18 +++++++ implement-trie-prefix-tree/hoyeongkwak.ts | 54 +++++++++++++++++++ word-break/hoyeongkwak.ts | 21 ++++++++ 4 files changed, 113 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/hoyeongkwak.ts create mode 100644 group-anagrams/hoyeongkwak.ts create mode 100644 implement-trie-prefix-tree/hoyeongkwak.ts create mode 100644 word-break/hoyeongkwak.ts diff --git a/best-time-to-buy-and-sell-stock/hoyeongkwak.ts b/best-time-to-buy-and-sell-stock/hoyeongkwak.ts new file mode 100644 index 000000000..269c7ed4b --- /dev/null +++ b/best-time-to-buy-and-sell-stock/hoyeongkwak.ts @@ -0,0 +1,20 @@ +/* + time complexity : O(n) + space complexity : O(1) +*/ +function maxProfit(prices: number[]): number { + let left = 0 + let right = 0 + let maxProfit = 0 + + while (right < prices.length) { + const curProfit = prices[right] - prices[left] + if (prices[left] < prices[right]) { + maxProfit = Math.max(curProfit, maxProfit) + } else { + left = right + } + right += 1 + } + return maxProfit +}; diff --git a/group-anagrams/hoyeongkwak.ts b/group-anagrams/hoyeongkwak.ts new file mode 100644 index 000000000..f8e02c652 --- /dev/null +++ b/group-anagrams/hoyeongkwak.ts @@ -0,0 +1,18 @@ +/* + time complexity : O(n * mlogm) + space complexity : O(n * m) +*/ +function groupAnagrams(strs: string[]): string[][] { + const strMap = new Map() + for (let i = 0; i < strs.length; i++) { + const sortedStr = strs[i].split('').sort().join('') + if (!strMap.has(sortedStr)) { + strMap.set(sortedStr, [strs[i]]) + } else { + const prevArr = strMap.get(sortedStr) + prevArr.push(strs[i]) + strMap.set(sortedStr, prevArr) + } + } + return Array.from(strMap.values()) +}; diff --git a/implement-trie-prefix-tree/hoyeongkwak.ts b/implement-trie-prefix-tree/hoyeongkwak.ts new file mode 100644 index 000000000..7b3124994 --- /dev/null +++ b/implement-trie-prefix-tree/hoyeongkwak.ts @@ -0,0 +1,54 @@ +/* + time complexity : O(n) + space complexity : O(n) +*/ +class TriedNode { + children: Map + isEnd: boolean + constructor(){ + this.children = new Map() + this.isEnd = false + } +} + +class Trie { + root: TriedNode + + constructor() { + this.root = new TriedNode() + } + + insert(word: string): void { + let node = this.root + for (const char of word) { + if (!node.children.has(char)) { + node.children.set(char, new TriedNode()) + } + node = node.children.get(char) + } + node.isEnd = true + } + + search(word: string): boolean { + let node = this.root + for (const char of word) { + if (!node.children.has(char)) { + return false + } + node = node.children.get(char) + } + return node.isEnd + } + + startsWith(prefix: string): boolean { + let node = this.root + for (const char of prefix) { + if (!node.children.has(char)) { + + return false + } + node = node.children.get(char) + } + return true + } +} \ No newline at end of file diff --git a/word-break/hoyeongkwak.ts b/word-break/hoyeongkwak.ts new file mode 100644 index 000000000..dec988b61 --- /dev/null +++ b/word-break/hoyeongkwak.ts @@ -0,0 +1,21 @@ +/* + time complexity : O(n^2k) + space complexity : O(n + m) +*/ + +function wordBreak(s: string, wordDict: string[]): boolean { + const dp: boolean[] = new Array(s.length + 1).fill(false) + + dp[0] = true + + const wordSet = new Set(wordDict) + for (let i = 1; i <= s.length; i++) { + for (let j = 0; j < i; j++) { + if (dp[j] && wordSet.has(s.substring(j, i))) { + dp[i] = true + break + } + } + } + return dp[s.length] +}; From 2b7256f15ba97952783f2395ae24683d13f8ea51 Mon Sep 17 00:00:00 2001 From: hoyeongkwak Date: Tue, 29 Apr 2025 22:18:37 +0900 Subject: [PATCH 2/2] add last line --- implement-trie-prefix-tree/hoyeongkwak.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implement-trie-prefix-tree/hoyeongkwak.ts b/implement-trie-prefix-tree/hoyeongkwak.ts index 7b3124994..ed1ba2c51 100644 --- a/implement-trie-prefix-tree/hoyeongkwak.ts +++ b/implement-trie-prefix-tree/hoyeongkwak.ts @@ -51,4 +51,4 @@ class Trie { } return true } -} \ No newline at end of file +}