From c8865fb417b9ad5cbb4f8f04b6a6a16b169113a5 Mon Sep 17 00:00:00 2001 From: YeomChaeeun Date: Wed, 12 Feb 2025 00:12:59 +0900 Subject: [PATCH 1/3] feat: invert-binary-tree solution --- invert-binary-tree/YeomChaeeun.ts | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 invert-binary-tree/YeomChaeeun.ts diff --git a/invert-binary-tree/YeomChaeeun.ts b/invert-binary-tree/YeomChaeeun.ts new file mode 100644 index 000000000..c86f0361a --- /dev/null +++ b/invert-binary-tree/YeomChaeeun.ts @@ -0,0 +1,45 @@ +/** + * Definition for a binary tree node. + * class TreeNode { + * val: number + * left: TreeNode | null + * right: TreeNode | null + * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + * } + */ + +/** + * 이진트리 좌우 반전하기 + * 알고리즘 복잡도 + * - 시간 복잡도: O(n) + * - 공간 복잡도: O(n) + * @param root + */ +function invertTree(root: TreeNode | null): TreeNode | null { + + // 1. 재귀 알고리즘 + // if(root === null) return null + // + // const right = root.right; + // root.right = invertTree(root.left) + // root.left = invertTree(right) + // + // return root + + // 2. 스택을 사용하여 트리를 순회 - 반복 알고리즘 + let stack : (TreeNode | null)[] = [root] + while(stack.length > 0) { + const node = stack.pop(); + if(!node) continue + + [node.left, node.right] = [node.right, node.left]; + + stack.push(node.left) + stack.push(node.right) + } + return root +} From a8ec2b301b05f780931d69f40c44f880f939df47 Mon Sep 17 00:00:00 2001 From: YeomChaeeun Date: Fri, 14 Feb 2025 19:52:18 +0900 Subject: [PATCH 2/3] feat: search-in-rotated-sorted-array solution --- search-in-rotated-sorted-array/YeomChaeeun.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 search-in-rotated-sorted-array/YeomChaeeun.ts diff --git a/search-in-rotated-sorted-array/YeomChaeeun.ts b/search-in-rotated-sorted-array/YeomChaeeun.ts new file mode 100644 index 000000000..d815a9ee5 --- /dev/null +++ b/search-in-rotated-sorted-array/YeomChaeeun.ts @@ -0,0 +1,38 @@ +/** + * 정렬된 배열에 target 문자의 인덱스 찾기 + * 알고리즘 복잡도 + * - 시간 복잡도: O(logn) + * - 공간 복잡도: O(1) + * @param nums + * @param target + */ +function search(nums: number[], target: number): number { + // findIndex 는 시간복잡도 O(n) 임 + // return nums.findIndex(value => value === target)?? -1 + + // 정렬되어 있는 특성을 이용한 풀이 + let low = 0; + let high = nums.length - 1; + while(low <= high) { + let mid = low + Math.floor((high - low) / 2); + + if(nums[mid] === target) return mid + + if(nums[low] <= nums[mid]) { + if(nums[low] <= target && target < nums[mid]) { + high = mid - 1; + } else { + low = mid + 1; + } + } else { + if(nums[mid] < target && target <= nums[high]) { + low = mid + 1; + } else { + high = mid - 1; + } + } + + } + + return -1 +} From eb8217b5582095d8b66420d29dc052aee0e5f70a Mon Sep 17 00:00:00 2001 From: YeomChaeeun Date: Fri, 14 Feb 2025 23:59:49 +0900 Subject: [PATCH 3/3] feat: search-in-rotated-sorted-array solution --- jump-game/YeomChaeeun.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 jump-game/YeomChaeeun.ts diff --git a/jump-game/YeomChaeeun.ts b/jump-game/YeomChaeeun.ts new file mode 100644 index 000000000..5b594ed38 --- /dev/null +++ b/jump-game/YeomChaeeun.ts @@ -0,0 +1,27 @@ +/** + * 점프 게임 현재 인덱스에서 인덱스 값만큼 점프하여 마지막 인덱스까지 도달할 수 있는지 구하기 + * 알고리즘 복잡도 + * - 시간 복잡도: O(n2) + * - 공간 복잡도: O(n) + * @param nums + */ +function canJump(nums: number[]): boolean { + const dp = new Array(nums.length).fill(false) + + dp[0] = true + for(let i = 0; i < nums.length; i++) { + if(!dp[i]) continue; + + for(let step = 1; step <= nums[i]; step++) { + if(i + step < nums.length) { + dp[i + step] = true; + } + } + + if(dp[nums.length -1]) { + return true; + } + } + + return dp[nums.length - 1]; +}