[togo26] WEEK 02 solutions#2700
Conversation
๐ togo26 ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
parkhojeong
left a comment
There was a problem hiding this comment.
์๊ณ ํ์
จ์ต๋๋ค~! ๊ฐ๋
์ฑ์ด ์ข์ ์ฝ๋ ์์ฑํด์ฃผ์
์ ์ฝ๊ฒ ์ฝํ๋ ๊ฑฐ ๊ฐ์ต๋๋ค!
์ปค๋ฉํธ ๋จ๊ฒจ๋ณด์์ต๋๋ค :)
| if (!node) return true; | ||
| if (!(min < node.val && node.val < max)) return false; | ||
| return traverse(node.left, min, node.val) && traverse(node.right, node.val, max); |
There was a problem hiding this comment.
๊ฐ๋ ์ฑ ์ข๊ฒ ์ ํ์ด์ฃผ์ ๊ฑฐ ๊ฐ์ต๋๋ค!
| var productExceptSelf = function (nums) { | ||
| const left = [1]; | ||
| const right = [1]; | ||
| const result = []; | ||
|
|
||
| for (let i = 1; i < nums.length; i++) { | ||
| left.push(left[i - 1] * nums[i - 1]); | ||
| } | ||
|
|
||
| for (let i = nums.length - 1; i > 0; i--) { | ||
| right.push(right[nums.length - 1 - i] * nums[i]); | ||
| } | ||
|
|
||
| for (let i = 0, j = nums.length - 1; i < nums.length; i++, j--) { | ||
| result[i] = left[i] * right[j]; | ||
| } | ||
|
|
||
| return result; | ||
| }; | ||
|
|
||
| // TC: O(n) / SC: O(1) | ||
| var productExceptSelf = function (nums) { | ||
| const left = new Array(nums.length).fill(1); | ||
|
|
||
| for (let i = 1; i < nums.length; i++) { | ||
| left[i] = left[i - 1] * nums[i - 1]; | ||
| } | ||
|
|
||
| let rightProduct = 1; | ||
| for (let i = nums.length - 1; i >= 0; i--) { | ||
| left[i] *= rightProduct; | ||
| rightProduct *= nums[i]; | ||
| } | ||
|
|
||
| return left; | ||
| }; |
There was a problem hiding this comment.
์ฒซ๋ฒ์งธ ํ์ด๊ฐ left, right, result๋ฅผ ๊ฐ๊ฐ ์ง์คํด์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ด๋ผ ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋ ๊ฒ ๊ฐ๋ค์!
| pre2 = pre1 + pre2; | ||
| pre1 = temp; | ||
| } | ||
| return pre2; |
There was a problem hiding this comment.
์ฒซ ๋ฒ์งธ ํ์ด๊ฐ ์ ํ์์ด ํ ๋์ ๋ณด์ฌ์ ๊ฐ๋ ์ฑ์ ๋ ์ข์ ๊ฑฐ ๊ฐ๋ค์!
๋๋ฒ ์งธ ํ์ด๋ ๊ณต๊ฐ๋ณต์ก๋๊ฐ ์ ๋ฆฌํด์ ์ข์๋ฐ์. pre1, pre2๊ฐ ๋จ์ํ ์ ์ธ ์์์ ๋ฐ๋ผ 1, 2 ์ธ์ง ํ์ฌ ํฌ์ธํฐ ๊ธฐ์ค์ผ๋ก 1,2 ๋ฒ์งธ ์ ์ธ๊ฑด์ง ๊ฐ๋จํ ์ฃผ์์ด ์์ด๋ ์ข์ ๊ฑฐ ๊ฐ์ต๋๋ค!
There was a problem hiding this comment.
์ข์ ์๊ฒฌ ๊ฐ์ฌํฉ๋๋ค! ๋ณ์๋ช ์ด ์ ๋งคํ๊ธดํ๋๋ฐ ๋ค์๋ฒ์๋ ์ฃผ์์ผ๋ก ๋ณด์กฐ ์ค๋ช ๋ถ์ฌ๋ณด๊ฒ ์ต๋๋ค.
| var threeSum = function (nums) { | ||
| const result = []; | ||
|
|
||
| nums.sort((a, b) => a - b); | ||
|
|
||
| for (let i = 0; i < nums.length; i++) { | ||
| if (i > 0 && nums[i] === nums[i - 1]) continue; | ||
| if (nums[i] > 0) break; | ||
|
|
||
| let left = i + 1; | ||
| let right = nums.length - 1; | ||
|
|
||
| while (left < right) { | ||
| const sum = nums[left] + nums[right]; | ||
| if (sum === -nums[i]) { | ||
| result.push([nums[i], nums[left], nums[right]]); | ||
| while (left < right && nums[left] === nums[left + 1]) left++; | ||
| while (left < right && nums[right] === nums[right - 1]) right--; | ||
| left++; | ||
| right--; | ||
| } else if (sum < -nums[i]) { | ||
| left++; | ||
| } else { | ||
| right--; | ||
| } | ||
| } | ||
| } | ||
|
|
||
| return result; | ||
| }; |
There was a problem hiding this comment.
๋งํ๋ ์ง์ ์์ด ์ ์ฝํ๋ ์ฝ๋์ธ ๊ฑฐ ๊ฐ์ต๋๋ค! ๐
Co-authored-by: Hojeong Park <parkhj062@gmail.com>
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Sorting, Greedy, Binary Search
- ์ค๋ช : ์ฃผ์ ๋ก์ง์ ์ ๋ ฌ ํ ๋ ํฌ์ธํฐ(left, right)๋ฅผ ํ์ฉํด ํฉ์ด 0์ธ ์๋ก ๋ค๋ฅธ ์ธ ์๋ฅผ ์ฐพ๋ ๋ฐฉ์์ด๋ค. ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด ๋ ํฌ์ธํฐ ์ด๋ ์ ๊ฐ ๋น๊ต๋ฅผ ์ํํ๋ค. ๋ฐ๋ผ์ Two Pointers ํจํด์ด ํต์ฌ์ด๋ฉฐ, ์ฝ๋์ ์ง์ ์ ์ผ๋ก ๊ตฌํ๋ ์ ๋ ฌ๊ณผ ์กฐ๊ฑด ํ์ธ์ผ๋ก ์ถ๊ฐ์ ์ธ ์ต์ ํ๊ฐ ํฌํจ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n^2) | O(n^2) | โ |
| Space | O(n^2) | O(1) | โ |
ํผ๋๋ฐฑ: ์ ๋ ฅ ๋ฐฐ์ด์ ํ ๋ฒ ์ ๋ ฌํ๊ณ , ๊ฐ i์ ๋ํด ์ข์ฐ ํฌ์ธํฐ๋ฅผ ์ด๋์ํค๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์์งํฉ๋๋ค. ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด i, left, right์ ์ค๋ณต ์นด์ดํธ๋ฅผ ์ ๊ฒฝ ์๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Monotonic Stack
- ์ค๋ช : climbStairs๋ ํผ๋ณด๋์น ๊ณ์ด์ ํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ DP ๋ฌธ์ ๋ก ๊ฐ ๋จ๊ณ์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ด์ ๊ฐ๋ค๋ก ๊ณ์ฐํ๋ค. ๋ฐ๋ณต์ ํตํ ์ํ ์ ์ด๊ฐ ํต์ฌ์ด๋ฉฐ, ์ต์ ๋ถ๋ถ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ DP ํจํด์ผ๋ก ๋ถ๋ฅ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ์ฒซ ๊ตฌํ์ ๋ฐฐ์ด์ ์ด์ฉํ DP์ด๊ณ , ๋ ๋ฒ์งธ ๊ตฌํ์ ์์ ๊ณต๊ฐ์ผ๋ก ์ต์ ํํ์ต๋๋ค.
๊ฐ์ ์ ์: ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๋ ๋ฐฉํฅ์ ์ด๋ฏธ ๋ฐ์๋์ด ์์ต๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Dynamic Programming, Hash Map / Hash Set
- ์ค๋ช : ๋ ํ์ด ๋ชจ๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ๋ค๋ฅธ ์์์ ๊ณฑ์ ๋์ ๊ฐ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ค. ์ผ์ชฝ ๋์ ๊ณฑ๊ณผ ์ค๋ฅธ์ชฝ ๋์ ๊ณฑ์ ๊ณฑ์ผ๋ก ๊ฐ ์์น์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ธฐ๋ฒ์ DP์ ๋ ํฌ์ธํฐ์ ๋ฌถ์์ผ๋ก ๋ณผ ์ ์๋ค. ๋ํ ๊ณต๊ฐ ์ ์ฝ ๋ฒ์ ์ ํ ๋ฐฐ์ด์ ๋์ ๊ฐ์ ๊ฐฑ์ ํ๋ ํํ๋ก ๊ตฌํ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ๋ ํจ์ค์ผ๋ก ์ข์ฐ ๊ณฑ์ ๊ตฌํ๊ณ ์ต์ข ์ ์ผ๋ก ๊ณฑ์ ๊ณ์ฐํฉ๋๋ค. ์ถ๊ฐ ๋ฐฐ์ด ์ฌ์ฉ์ผ๋ก ์ง๊ด์ ์ ๋๋ค.
๊ฐ์ ์ ์: ์ถ๊ฐ ๋ฐฐ์ด ์ฌ์ฉ์ ์ค์ด๊ณ ๋ฌด์ ๊ฐ๋ฅํ ๊ณต๊ฐ ์ต์ ํ๋ ๊ณ ๋ ค ๊ฐ๋ฅ.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Two Pointers, Dynamic Programming
- ์ค๋ช : ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ํด์๋งต์ผ๋ก ์นด์ดํธํ๋ ๋ถ๋ถ์ด ํต์ฌ์ด๋ฉฐ, ๊ฐ ๋ฌธ์ ๋ฑ์ฅ ํ์๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ ํด์ ๋งต ํจํด์ ์ํฉ๋๋ค. ๋ํ ์ ๋ ฅ ๊ธธ์ด๊ฐ ๊ฐ์์ ํ์ธํ๊ณ ๋ ํด์๋งต์ ๊ฐ์ ๋น๊ตํ๋ ํ๋ฆ์ ํจํด์ ๋ํ์ ์ธ ํ์ฉ ์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๋ค๋ง ํน์ ํฌํฌ์ธํฐ๋ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ณด๋ค๋ ํด์ ๋งต ๊ธฐ๋ฐ์ ๋น๊ต๊ฐ ์ฃผ๋ฅผ ์ด๋ฃน๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(nlogn) | O(n log n) | โ |
| Space | O(nlogn) | O(n) | โ |
ํผ๋๋ฐฑ: ์ฒซ ๋ฒ์งธ ๊ตฌํ์ ์ ๋ ฌ์ผ๋ก ๋จ์ํ๊ณ ๋ ๋ฒ์งธ ๊ตฌํ์ ํด์๋งต์ผ๋ก ์ ํ ์๊ฐ์ ๋น๊ตํฉ๋๋ค.
๊ฐ์ ์ ์: ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด์๋งต ๋ฒ์ ์ด ๋ ์ต์ ํ์ ์ ๋ฆฌํฉ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, Depth-First Search, Binary Tree
- ์ค๋ช : ๋ฃจํธ-์ข์ฐ ์์ ๋ ธ๋์ ๊ฐ ๋ฒ์๋ฅผ ์ฌ๊ท๋ก ์ถ์ ํ๋ฉฐ BST ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ๊ฒ์ฌํ๋ฏ๋ก, ์ด ์ฝ๋๋ ์ด์ง ํ์ ํธ๋ฆฌ ๊ฒ์ฌ์ ๊น์ด ์ฐ์ ํ์์ ์กฐํฉ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ์ต์/์ต๋ ๊ฒฝ๊ณ ๊ฐ์ ์ด์ฉํ ํ์์ผ๋ก ํจํด์ ๋งค์นญํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(h) | โ |
ํผ๋๋ฐฑ: ๊ฐ ๋ ธ๋๋ฅผ ์ ํํ ๋ฒ์ ์์ ์๋์ง ํ์ธํ๋ฉฐ ์ฌ๊ท์ ์ผ๋ก ์์๋ค์ ๊ฒ์ฌํฉ๋๋ค.
๊ฐ์ ์ ์: ์คํ ๊ธฐ๋ฐ์ ๊ตฌํ์ผ๋ก๋ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ ์ด ๊ฐ๋ฅ.
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!