[seongmin36] WEEK 02 Solutions#2690
Conversation
๐ seongmin36 ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Hash Map / Hash Set, Greedy, Sorting
- ์ค๋ช : ์ ๋ ฌ๋ ๋ฐฐ์ด์์ i๋ฅผ ๊ณ ์ ํ๊ณ ๋๋จธ์ง์์ ๋ ์์ ํฉ์ผ๋ก 0์ ๋ง๋๋ ์ง์ ์ฐพ๊ธฐ ์ํด Set์ ์ฌ์ฉํด ์ญ์์ ํ์ธํ๋ค. ํ ๋ฒ์ ์ธ๋ถ ๋ฃจํ์ ๋ด๋ถ ๋ฃจํ ์กฐํฉ์ผ๋ก ๋ถ๋ถ์ ์ผ๋ก ํฌ ํฌ์ธํฐ์ฒ๋ผ ๋์ํ์ง๋ง, ์ค์ ๋ก๋ ํด์์ ์ผ๋ก ํ์ํ๋ ํจํด๊ณผ ์ค๋ณต ์ ๊ฑฐ ๋ก์ง์ด ํฌํจ๋์ด ์๋ค. ์ ์ฒด์ ์ผ๋ก 3SUM ๋ฌธ์ ์ ํ์ ์ ๋ต์ผ๋ก ํด์ ๋งต/์ ๊ณผ ์ ๋ ฌ์ ์กฐํฉ์ ์ฌ์ฉํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n^2) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ ๋ ฌ ํ ์ธ๋ถ ๋ฃจํ๋ฅผ ๋๊ณ ๋ด๋ถ์์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํ ์ฒ๋ฆฌ์ ๋ณด์กฐ ์งํฉ(pocket)์ ์ฌ์ฉํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ ์๊ฐ๋ณต์ก๋๊ฐ O(n^2)์ธ ๊ตฌ์กฐ๋ฅผ ์ ๋ฐ๋ฅด๊ณ ์๋ค. ์ค๋ณต ์ ๊ฑฐ๋ฅผ ๋ฐฐ์ด ์ธ๋ฑ์ค ๋น๊ต๋ก๋ ๊ฐ๋ฅํ์ง๋ง, Set ์ฌ์ฉ์ผ๋ก๋ ์์ ์ ์ด๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming
- ์ค๋ช : 2๋จ๊ณ ์ ํ์ 1๋จ๊ณ ์ ํ์ ํฉ์ผ๋ก ์๋ฅผ ๋์ ๊ณ์ฐํ๋ ์ ํ์ ์ธ DP ๋ฌธ์ ์ด๋ฉฐ, ์ด์ ์ํ์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ํ์ฌ ๊ฐ์ ๊ตฌํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ๋ฐฐ์ด์ ํ์ฉํด ์์ ๋ ๊ฒฝ์ฐ์ ํฉ์ผ๋ก ํ์ฌ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ค.
๊ฐ์ ์ ์: ์ถ๊ฐ ๊ณต๊ฐ ์์ด ์์ ๊ณต๊ฐ์ผ๋ก ๊ตฌํํ ์๋ ์๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers
- ์ค๋ช : ๋ฐฐ์ด์ ๊ฐ ์์น์ ๋ํด ์์ ์ ์ ์ธํ ๊ณฑ์ ๊ตฌํ๊ธฐ ์ํด ์ข์ฐ ๋ ์ง์ ์ ๋์์ ์งํํ๋ ๋ ํฌ์ธํฐ ๋ฐฉ์์ด๋ค. left์ right๋ฅผ ๊ฐ๊ฐ ๊ด๋ฆฌํ๋ฉฐ ์ค๊ฐ ์ค๋ณต ์์ด ๋์ ๊ณฑ์ ์ ๋ฐ์ดํธํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ผ์ชฝ ๊ณฑ๊ณผ ์ค๋ฅธ์ชฝ ๊ณฑ์ ๋์ ํด ๊ฐ ์์น์ ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
๊ฐ์ ์ ์: ์ถ๊ฐ ๊ณต๊ฐ ์ฌ์ฉ์ ์ต์ํํ๋ ค๋ฉด ์ถ๋ ฅ ๋ฐฐ์ด์ ์ด์ฉํด ๋ ์ต์ ํ ๊ฐ๋ฅํ๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Two Pointers
- ์ค๋ช : ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋๋ฅผ ํด์๋งต์ผ๋ก ์นด์ดํธํ๊ณ ๋น๊ตํ๋ฉฐ, ํ ๋ฌธ์์ด์์ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ์ฐจ๊ฐํ๋ ๋ฐฉ์์ ํด์ ๋งต ํ์ฉ ํจํด์ด๋ค. ๋น ๋ฅธ ๋น๊ต๋ฅผ ์ํด ํฌ์ธํฐ๋ฅผ ์ํํ๋ ํํ๋ก ๊ตฌํ๋์ด ๋ ๋ฌธ์์ด ๊ธธ์ด ์ผ์น ์ฌ๋ถ๋ฅผ ๋จผ์ ๊ฒ์ฌํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(k) |
ํผ๋๋ฐฑ: ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด ๋ฐ๋ก false๋ฅผ ๋ฐํํ๊ณ , ํ ๋ฌธ์์ด์ ๋ฌธ์ ์นด์ดํธ๋ฅผ ๋งต์ ๊ธฐ๋กํ ๋ค ๋ค๋ฅธ ๋ฌธ์์ด๋ก ์ฐจ๊ฐํ๋ค.
๊ฐ์ ์ ์: ์ํ๋ฒณ ๋ฌธ์ ์ ํ์ด ์๋ค๋ฉด ๊ณ ์ ํฌ๊ธฐ ๋ฐฐ์ด๋ก๋ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, DFS, Monotonic Stack, Two Pointers, Sliding Window, Breadth-First Search, Backtracking, Dynamic Programming, Hash Map / Hash Set, Greedy, Divide and Conquer, Union Find, Trie, Bit Manipulation, Heap / Priority Queue, Hash Map / Hash Set
- ์ค๋ช : ์ฌ๊ท DFS๋ก ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋๋ฅผ ํ์ธํ๋ฉฐ ๋ถ๋ฑ์ ์ ์ฝ์ ๋ง์กฑํ๋์ง ๊ฒ์ฌํ๋ค. ๋ฃจํธ์์ ์์ํด ์ผ์ชฝ์ ๋ ์๊ณ ์ค๋ฅธ์ชฝ์ ๋ ์ปค์ผ ํ๋ค๋ BST ํน์ฑ์ min/max ๊ฒฝ๊ณ๊ฐ์ผ๋ก ์ฌ๊ท์ ์ผ๋ก ๊ฒ์ฆํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(h) |
ํผ๋๋ฐฑ: ์ฌ๊ท์ ์ผ๋ก ์ผ์ชฝ์ min, ํ์ฌ๊ฐ, ์ค๋ฅธ์ชฝ์ ํ์ฌ๊ฐ, max๋ก ํ์ํ๋ฉฐ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ ํ๋ค.
๊ฐ์ ์ ์: ๊น์ด๊ฐ ํฐ ํธ๋ฆฌ์์ ์คํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฐ๋ คํ๋ค๋ฉด ๋น์ฌ๊ท DFS๋ก ๋ฐ๊ฟ ์ ์๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
JAEKWANG97
left a comment
There was a problem hiding this comment.
๋ฆฌ๋ทฐํ์ต๋๋ค! ์ ๋ฐ์ ์ผ๋ก ํ์ด๋ค์ด ๋ฌธ์ ์กฐ๊ฑด์ ๋ง๊ฒ ์ ์์ฑ๋์ด ์๊ณ , 3Sum ์ค๋ณต ์ฒ๋ฆฌ๋ Product of Array Except Self์ prefix/suffix ๋์ ๋ฐฉ์๋ ๊น๋ํ๊ฒ ๋์ํ๋ ๊ฒ ํ์ธํ์ต๋๋ค.
๋ก์ปฌ์์ ์ฃผ์ ์์ ์ ๋ช ๊ฐ์ง ๊ฒฝ๊ณ ์ผ์ด์ค๋ ๊ฐ์ด ํ์ธํ์ต๋๋ค.
- 3Sum: ์ค๋ณต ์์/0๋ง ์๋ ์ผ์ด์ค
- Climbing Stairs: n=1,2,3,4,5,10
- Product of Array Except Self: 0 ํฌํจ/0 ๋ ๊ฐ ํฌํจ ์ผ์ด์ค
- Valid Anagram: ๊ธธ์ด ๋์ผํ์ง๋ง ๋ฌธ์ ์๊ฐ ๋ค๋ฅธ ์ผ์ด์ค
- Validate BST: subtree bound ์๋ฐ, duplicate ์ผ์ด์ค
๊ฐ๋ฒผ์ด ์ฝ๋ฉํธ๋ก๋ climbStairs๋ ํ์ฌ ๋ฐฐ์ด์ n + 1๊น์ง ๋ง๋ค๊ณ arr[n - 1]์ ๋ฐํํ๊ณ ์๋๋ฐ, ๋์์๋ ๋ฌธ์ ์์ง๋ง ์ธ๋ฑ์ค ๊ธฐ์ค์ dp[1] = 1, dp[2] = 2์ฒ๋ผ ๋ง์ถ๊ฑฐ๋ ๋ณ์ 2๊ฐ๋ง ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ค์ด๋ฉด ๋ ์ง๊ด์ ์ผ๋ก ์ฝํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ณ ์ํ์ จ์ต๋๋ค ๐
JAEKWANG97
left a comment
There was a problem hiding this comment.
์ ์ฒด์ ์ผ๋ก ์ ๋ดค์ต๋๋ค! ํ์ด ํ๋ฆ์ด ์ ์ฝํ๊ณ , ๊ฐ๋ ์ฑ ๊ด์ ์์ ๊ฐ์ด ๋ณด๋ฉด ์ข์ ๋ถ๋ถ๋ง ์งง๊ฒ ์ฝ๋ฉํธ ๋จ๊ฒผ์ต๋๋ค. ๊ณ ์ํ์ จ์ต๋๋ค ๐
| function validate(p, min, max) { | ||
| if (p === null) return true; | ||
|
|
||
| if (p.val <= min || p.val >= max) return false; | ||
|
|
||
| return validate(p.left, min, p.val) && validate(p.right, p.val, max); | ||
| } | ||
|
|
||
| return validate(root, -Infinity, Infinity); |
There was a problem hiding this comment.
min, max ๋ฒ์๋ฅผ ํจ๊ป ๋๊ธฐ๋ฉด์ ๊ฒ์ฆํ ์ ์ด ์ข์์ต๋๋ค!
๋จ์ํ ํ์ฌ ๋ ธ๋์ ์์ ๋ ธ๋๋ง ๋น๊ตํ์ง ์๊ณ , ์๋ธํธ๋ฆฌ ์ ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ๋ ๊ฐ์ ๋ฒ์๋ฅผ ์ ์งํด์ ๊ฒ์ฌํ๊ธฐ ๋๋ฌธ์ BST์ ํจ์ ์ผ์ด์ค๋ ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ณด์ ๋๋ค.
| let arr = new Array(n + 1); | ||
|
|
||
| arr[0] = 1; | ||
| arr[1] = 2; | ||
|
|
||
| for (let i = 2; i < arr.length; i++) { | ||
| arr[i] = arr[i - 2] + arr[i - 1]; | ||
| } | ||
|
|
||
| return arr[n - 1]; |
There was a problem hiding this comment.
์ ํ์์ ๋ฐฐ์ด๋ก ํ์ด์ฃผ์ ์ ํ์ด ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ข์์ต๋๋ค!
์ ๋ ๊ณ๋จ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ง์ถ๋ ๋ฐฉ์์ด ๋ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ ์ ํธํ๋ ํธ์
๋๋ค. ํ์ฌ๋ arr[0]์ด 1์นธ, arr[1]์ด 2์นธ์ ์๋ฏธํ๊ณ arr[n - 1]์ ๋ฐํํ๋ ๊ตฌ์กฐ์ธ๋ฐ, dp[1] = 1, dp[2] = 2์ฒ๋ผ ๋ง์ถ๋ฉด ์ ํ์์ด ๋ ์์ฐ์ค๋ฝ๊ฒ ์ฝํ ๊ฒ ๊ฐ์์.
๊ฐ๋ ์ฑ ๊ด์ ์ ๊ฐ๋ฒผ์ด ์๊ฒฌ์ผ๋ก ๋ด์ฃผ์๋ฉด ์ข๊ฒ ์ต๋๋ค ๐
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!