From d9a4fc92df9b31dec2ebf23ebca42fc558241e51 Mon Sep 17 00:00:00 2001 From: sadie100 <03sadie@gmail.com> Date: Fri, 3 Apr 2026 13:07:30 +0900 Subject: [PATCH 1/2] sadie100: add 1 solution --- best-time-to-buy-and-sell-stock/sadie100.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/sadie100.ts diff --git a/best-time-to-buy-and-sell-stock/sadie100.ts b/best-time-to-buy-and-sell-stock/sadie100.ts new file mode 100644 index 000000000..6073439a8 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/sadie100.ts @@ -0,0 +1,21 @@ +/* +prices를 순회하며 현재 최저값과의 차이를 구해서 최대 profit을 갱신한 뒤 최저값(구매가)를 갱신, 최종값을 리턴한다 + +시간복잡도 O(N) - N은 prices의 length +*/ + +function maxProfit(prices: number[]): number { + let buy + let result = 0 + + for (let price of prices) { + if (buy === undefined) { + buy = price + continue + } + result = Math.max(result, price - buy) + buy = Math.min(price, buy) + } + + return result +} From 53ba8fc1e6ea3e26f71ab1c2c24f1cd6a76d05c1 Mon Sep 17 00:00:00 2001 From: sadie100 <03sadie@gmail.com> Date: Sun, 5 Apr 2026 16:45:18 +0900 Subject: [PATCH 2/2] sadie100: group anagrams solution --- group-anagrams/sadie100.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 group-anagrams/sadie100.ts diff --git a/group-anagrams/sadie100.ts b/group-anagrams/sadie100.ts new file mode 100644 index 000000000..34f94bc00 --- /dev/null +++ b/group-anagrams/sadie100.ts @@ -0,0 +1,30 @@ +/* +strs의 문자열들을 등장빈도를 바탕으로 계산한 특수 문자열로 전환하고 같은 것끼리 묶는다. + +시간복잡도 : O(N * K) - N은 strs의 개수, K는 strs의 길이. N 순회 안에 K 순회 +*/ + +function groupAnagrams(strs: string[]): string[][] { + const anagramMap = {} + const result = strs.reduce((acc, cur) => { + const charArray = new Array(26).fill(0) + + for (let char of cur) { + const charIdx = char.charCodeAt(0) - 'a'.charCodeAt(0) + charArray[charIdx] += 1 + } + + const sortedValue = charArray.join('#') + + const targetIdx = anagramMap[sortedValue] + if (targetIdx !== undefined) { + acc[targetIdx].push(cur) + } else { + anagramMap[sortedValue] = acc.length + acc.push([cur]) + } + return acc + }, []) + + return result +}