From c1525daab5c2cd32c38aa52a72cf52d42e6febec Mon Sep 17 00:00:00 2001 From: hsskey Date: Mon, 21 Apr 2025 21:29:40 +0900 Subject: [PATCH 1/5] merge-two-sorted-lists solved --- merge-two-sorted-lists/hsskey.js | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 merge-two-sorted-lists/hsskey.js diff --git a/merge-two-sorted-lists/hsskey.js b/merge-two-sorted-lists/hsskey.js new file mode 100644 index 000000000..4bcfa0355 --- /dev/null +++ b/merge-two-sorted-lists/hsskey.js @@ -0,0 +1,34 @@ +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode} list1 + * @param {ListNode} list2 + * @return {ListNode} + */ +var mergeTwoLists = function(list1, list2) { + const dummy = new ListNode() + let tail = dummy + + while(list1 && list2) { + if(list1.val < list2.val) { + tail.next = list1 + list1 = list1.next + } else { + tail.next = list2 + list2 = list2.next + } + tail = tail.next + } + + if(list1) { + tail.next = list1 + } else if(list2) { + tail.next = list2 + } + return dummy.next +}; From 8335741af6d3d17ebbb16d6558a19a1e4ca5f249 Mon Sep 17 00:00:00 2001 From: hsskey Date: Tue, 22 Apr 2025 21:48:38 +0900 Subject: [PATCH 2/5] maximum-depth-of-binary-tree solved --- maximum-depth-of-binary-tree/hsskey.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 maximum-depth-of-binary-tree/hsskey.js diff --git a/maximum-depth-of-binary-tree/hsskey.js b/maximum-depth-of-binary-tree/hsskey.js new file mode 100644 index 000000000..96d1d52a9 --- /dev/null +++ b/maximum-depth-of-binary-tree/hsskey.js @@ -0,0 +1,25 @@ +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @return {number} + */ +var maxDepth = function(root) { + function dfs(node) { + if(!node) { + return 0 + } + + const left = dfs(node.left) + const right = dfs(node.right) + + return Math.max(left, right) + 1 + } + return dfs(root) +}; From c5899e5e81cff52f6054f8a3598e95e298a34e17 Mon Sep 17 00:00:00 2001 From: hsskey Date: Wed, 23 Apr 2025 21:43:23 +0900 Subject: [PATCH 3/5] find-minimum-in-rotated-sorted-array solved --- .../hsskey.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 find-minimum-in-rotated-sorted-array/hsskey.js diff --git a/find-minimum-in-rotated-sorted-array/hsskey.js b/find-minimum-in-rotated-sorted-array/hsskey.js new file mode 100644 index 000000000..7a310a138 --- /dev/null +++ b/find-minimum-in-rotated-sorted-array/hsskey.js @@ -0,0 +1,27 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var findMin = function(nums) { + if(nums.length === 1) { + return nums[0] + } + + if(nums[0] < nums[nums.length -1]) { + return nums[0] + } + + let left = 0 + let right = nums.length - 1 + + while(left < right) { + const mid = Math.floor((left + right) / 2) + + if(nums[mid] > nums[right]) { + left = mid + 1 + } else { + right = mid + } + } + return nums[left] +}; From 4f7784fd319ef5c280e3041f6d466165b4373694 Mon Sep 17 00:00:00 2001 From: hsskey Date: Thu, 24 Apr 2025 22:33:13 +0900 Subject: [PATCH 4/5] word-search solved --- word-search/hsskey.js | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 word-search/hsskey.js diff --git a/word-search/hsskey.js b/word-search/hsskey.js new file mode 100644 index 000000000..4efd379a4 --- /dev/null +++ b/word-search/hsskey.js @@ -0,0 +1,48 @@ +/** + * @param {character[][]} board + * @param {string} word + * @return {boolean} + */ +var exist = function(board, word) { + const rows = board.length; + const cols = board[0].length; + + function backtrack(r, c, index) { + // 모든 문자를 다 찾았으면 true 반환 + if (index === word.length) return true; + + // 경계 조건 및 현재 문자가 일치하지 않으면 false + if ( + r < 0 || r >= rows || + c < 0 || c >= cols || + board[r][c] !== word[index] + ) { + return false; + } + + // 현재 위치 문자 저장 후, 방문 표시로 덮어쓰기 + const temp = board[r][c]; + board[r][c] = '#'; + + // 4방향 탐색: 상하좌우 + const directions = [[-1,0], [1,0], [0,-1], [0,1]]; + for (const [dr, dc] of directions) { + if (backtrack(r + dr, c + dc, index + 1)) { + return true; + } + } + + // 상태 복구 + board[r][c] = temp; + return false; + } + + // 모든 위치에서 시작 가능 + for (let i = 0; i < rows; i++) { + for (let j = 0; j < cols; j++) { + if (backtrack(i, j, 0)) return true; + } + } + + return false; +}; From 7bf90b546d1e698a3ce84dd93b1327d76b556863 Mon Sep 17 00:00:00 2001 From: hsskey Date: Fri, 25 Apr 2025 21:21:40 +0900 Subject: [PATCH 5/5] coin-change solved --- coin-change/hsskey.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 coin-change/hsskey.js diff --git a/coin-change/hsskey.js b/coin-change/hsskey.js new file mode 100644 index 000000000..bf799571b --- /dev/null +++ b/coin-change/hsskey.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} coins + * @param {number} amount + * @return {number} + */ +var coinChange = function(coins, amount) { + const dp = new Array(amount + 1).fill(Infinity) + + dp[0] = 0 + + for(coin of coins) { + for(let i = coin; i <= amount; i++) { + dp[i] = Math.min(dp[i], dp[i - coin] + 1) + } + } + + return dp[amount] === Infinity ? -1 : dp[amount] +};