diff --git a/climbing-stairs/solbijae.ts b/climbing-stairs/solbijae.ts new file mode 100644 index 000000000..c55c52ea0 --- /dev/null +++ b/climbing-stairs/solbijae.ts @@ -0,0 +1,16 @@ +function climbStairs(n: number): number { + if (n <= 3) return n; + + // 첫 시도: 시간 복잡도 O(2^n), 공간 복잡도 O(n) + // return climbStairs(n - 1) + climbStairs(n - 2); + + // 두번째 시도: 시간 복잡도 O(n), 공간 복잡도 O(1) + let prev1 = 2, prev2 = 1; + for (let i = 3; i <= n; i++) { + const curr = prev1 + prev2; + prev2 = prev1; + prev1 = curr; + } + + return prev1; +}; diff --git a/product-of-array-except-self/solbijae.ts b/product-of-array-except-self/solbijae.ts new file mode 100644 index 000000000..60b614b5e --- /dev/null +++ b/product-of-array-except-self/solbijae.ts @@ -0,0 +1,19 @@ +function productExceptSelf(nums: number[]): number[] { + // 시간 복잡도: O(n), 공간 복잡도: O(1) + const n = nums.length; + const answer = new Array(n).fill(1); + + // answer[i]에 left 곱 저장 + for (let i = 1; i < n; i++) { + answer[i] = answer[i - 1] * nums[i - 1]; + } + + // right 곱을 한 변수에 저장하면서 answer에 곱하기 + let rightProduct = 1; + for (let i = n - 1; i >= 0; i--) { + answer[i] *= rightProduct; + rightProduct *= nums[i]; + } + + return answer; +} diff --git a/valid-anagram/solbijae.ts b/valid-anagram/solbijae.ts new file mode 100644 index 000000000..8ea6b75f7 --- /dev/null +++ b/valid-anagram/solbijae.ts @@ -0,0 +1,17 @@ +function isAnagram(s: string, t: string): boolean { + // 첫 시도: 시간 복잡도 O(n log n), 공간 복잡도 O(n) + // const sSort = s.split('').sort(); + // const tSort = t.split('').sort(); + // return JSON.stringify(sSort) === JSON.stringify(tSort); + + // 시간 복잡도 O(n), 공간복잡도 O(1) + if (s.length !== t.length) return false; + + const count = new Array(26).fill(0); + for (let i=0; i c === 0); +};