[seueooo] WEEK 03 Solutions#2725
Conversation
๐ seueooo ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
parkhojeong
left a comment
There was a problem hiding this comment.
์๊ณ ํ์
จ์ต๋๋ค~! ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ํ์ด๋ ์ต์ ํ๊ฐ ๋ง์ด ๋์ด์์ด์ ์ข์์ต๋๋ค :)
๋ช ๊ฐ์ง ์ปค๋ฉํธ ๋จ๊ฒจ๋ณด์์ต๋๋ค.
| let dp = new Array(nums.length).fill(0); | ||
|
|
||
| dp[0] = nums[0]; | ||
| for (let i = 1; i < nums.length; i++) { | ||
| dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]); | ||
| } | ||
|
|
||
| return Math.max(...dp); |
There was a problem hiding this comment.
kadane ์๊ณ ๋ฆฌ์ฆ์ด๋๊ฑธ ์ฐ์ ๊ฑฐ ๊ฐ์๋ฐ ํน์ ์ด๋ค ๋ฐฉ๋ฒ์ธ์ง ์ค๋ช ๋ถํ๋๋ ค๋ ๋ ๊น์?
There was a problem hiding this comment.
์ค ์ฒ์ ๋ค์ด๋ณด๋๋ฐ ์ ๊ฐ ๊ตฌํํ ๋ฐฉ์์ด kadane ์๊ณ ๋ฆฌ์ฆ์ด๊ตฐ์..!
ํ์ฌ ๊ฐ nums[i]๋ฅผ ์ด์ ์ฐ์ํฉ์ ์ด์ด ๋ถ์ผ์ง, ์๋๋ฉด nums[i]๋ถํฐ ์๋ก ์์ํ ์ง๋ฅผ ๋น๊ตํด์ ์ต๋ ์ฐ์ ๋ถ๋ถํฉ์ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค :)
| let prev = -Infinity; | ||
|
|
||
| const inOrder = (node) => { | ||
| if (!node) return true; | ||
| if (!inOrder(node.left)) return false; | ||
| if (node.val <= prev) return false; | ||
| prev = node.val; | ||
| return inOrder(node.right); | ||
| }; | ||
| return inOrder(root); |
There was a problem hiding this comment.
inOrder ๋ฐฉ์์ผ๋ก ํ์ด์ฃผ์ จ๊ตฐ์! ์ ์ญ๋ณ์ prev๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์์ ํจ์ ํํ๋ก ํ์ด๋ณด์ ๋ ์ข์ ๊ฑฐ ๊ฐ์์!
| N = candidates.length | ||
| T = target | ||
| M = candidates ์ค ์ต์๊ฐ | ||
|
|
There was a problem hiding this comment.
์ด ์ฃผ์์ ์ฝ๋๋ ์ ๋ง๋๊ฑฐ ๊ฐ์์ ์ง์์ฃผ์ ๋ ์ข์ ๊ฑฐ ๊ฐ์์!
There was a problem hiding this comment.
์ ๋ถ๋ถ์ ์ฝ๋๋์ ๊ด๋ จ ์๊ณ ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์์ T / M์ ์๋ฏธ๋ฅผ ์ค๋ช ํ๋ ค๊ณ ๋ ์ฃผ์์ด์์ !
| for (let i = 0; i < n - 2; i++) { | ||
| let l = i + 1; | ||
| let h = n - 1; | ||
| if (nums[i] > 0) break; | ||
| // ์ค๋ณต ์ ๊ฑฐ | ||
| if (i > 0 && nums[i] === nums[i - 1]) continue; | ||
|
|
||
| while (l < h) { | ||
| const sum = nums[i] + nums[l] + nums[h]; | ||
| if (sum > 0) { | ||
| h--; | ||
| } else if (sum < 0) { | ||
| l++; | ||
| } else { | ||
| answer.push([nums[i], nums[l], nums[h]]); | ||
| while (l < h && nums[l] === nums[l + 1]) l++; | ||
| while (l < h && nums[h] === nums[h - 1]) h--; | ||
| l++; | ||
| h--; | ||
| } | ||
| } |
There was a problem hiding this comment.
๊ผผ๊ผผํ๊ฒ ์ต์ ํ ํ์ ์ ํ์ด์ฃผ์ จ๋ค์ :)
| var hammingWeight = function (n) { | ||
| let count = 0; | ||
| while (n > 0) { | ||
| if (n % 2 === 1) count++; | ||
| n = Math.floor(n / 2); | ||
| } | ||
| return count; |
There was a problem hiding this comment.
์ฌ์ํ ๋ถ๋ถ์ด๊ธด ํ๋ฐ ์๋ฐ ์คํ์ผ๋ ํ ๋ฒ ๊ณ ๋ คํด๋ณด์ ๋ ์ข์ ๊ฑฐ ๊ฐ์ต๋๋ค!
- python์๋
n // 2์ฒ๋ผ ๊น๋ํ๊ฒ ํํ์ด ๋๋๋ฐ js ๋ ๋น์ทํ ์ฐ์ฐ์ด n >> 1 ์ผ ๊ฑฐ ๊ฐ๋ค์. ํ ๋ฒ ๊ณ ๋ คํด๋ณด์ ๋ ์ข์ ๊ฑฐ ๊ฐ์ต๋๋ค :) - count ๋ถ๋ถ์ n % 2 ์ ๊ฒฐ๊ณผ๊ฐ 0, 1์ด์ด์
count += n % 2๋ก ์จ๋ณผ ์๋ ์์ ๊ฑฐ ๊ฐ์ต๋๋ค!
| var hammingWeight = function (n) { | |
| let count = 0; | |
| while (n > 0) { | |
| if (n % 2 === 1) count++; | |
| n = Math.floor(n / 2); | |
| } | |
| return count; | |
| var hammingWeight = function (n) { | |
| let count = 0; | |
| while (n > 0) { | |
| count += n % 2; | |
| n >>= 1; | |
| } | |
| return count; |
There was a problem hiding this comment.
์ํํธ ์ฐ์ฐ์๋ฅผ ๊ฑฐ์ ์ฌ์ฉํด๋ณด์ง ์์์ ์ ๋ชฐ๋๋๋ฐ ์ข์ ์ ๋ณด ์์๊ฐ๋๋ค :)
|
|
||
| for (let i = start; i < candidates.length; i++) { | ||
| path.push(candidates[i]); | ||
| dfs(i, path, sum + candidates[i]); |
There was a problem hiding this comment.
start๋ฅผ ๋๊ฒจ ์ค๋ณต ์กฐํฉ์ ๋ง๊ณ , ์ฌ๊ท ํ pop()์ผ๋ก ์ํ๋ฅผ ๋ณต๊ตฌํ๋ ํ๋ฆ์ด ์ ์ฝํ์ต๋๋ค! ํ์ฌ๋ ์ ๋ต์ด์ง๋ง candidates๋ฅผ ๋จผ์ ์ ๋ ฌํ ๋ค sum + candidates[i] > target์ผ ๋ breakํ๋ฉด, ๋ค์ ๋ ํฐ ํ๋ณด๋ฅผ ๋ ํ์ํ์ง ์์๋ ๋ผ์ ๊ฐ์ง์น๊ธฐ๋ฅผ ์กฐ๊ธ ๋ ์ผ์ฐ ํ ์ ์์ ๊ฒ ๊ฐ์์.
| dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]); | ||
| } | ||
|
|
||
| return Math.max(...dp); |
There was a problem hiding this comment.
dp[i]๊ฐ ํ์ฌ ์์น์์ ๋๋๋ ์ต๋ ์ฐ์ํฉ์ด๋ผ๋ ํ๋ฆ์ด ๋ช
ํํด์ ์ฝ๊ธฐ ์ข์์ต๋๋ค! ์ด ํ์ด์์๋ ์ง์ ๊ฐ๊ณผ ์ ์ฒด ์ต๋๊ฐ๋ง ํ์ํ๋ฏ๋ก, ๋ฐฐ์ด ๋์ ๋ ๋ณ์๋ง ์ฌ์ฉํ๋ฉด ๊ณต๊ฐ์ O(1)๋ก ์ค์ด๊ณ ๋ง์ง๋ง์ Math.max(...dp)๋ ํผํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
There was a problem hiding this comment.
์๊ฒฌ๊ฐ์ฌํฉ๋๋ค:) ๋ฐ์ํ์ต๋๋ค. 7b8764b
JAEKWANG97
left a comment
There was a problem hiding this comment.
์ ์ฒด์ ์ผ๋ก ์ ๋ดค์ต๋๋ค! ๊ฐ ํ์ด์์ ์ฌ์ฉํ ํจํด์ด ๋ช ํํ๊ณ ์ฝ๋๋ ๊ฐ๊ฒฐํ์ต๋๋ค. Combination Sum์ ๊ฐ์ง์น๊ธฐ์ Maximum Subarray์ ๊ณต๊ฐ ์ฌ์ฉ ์ชฝ์ ๊ฐ์ ์์ด๋์ด๋ง ์งง๊ฒ ๋จ๊ฒผ์ต๋๋ค. ์๊ณ ํ์ จ์ต๋๋ค!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Sorting
- ์ค๋ช : ๋ฐฐ์ด์ ์ ๋ ฌํ ๋ค ๊ณ ์ ๋ ํ ์์ ๋จ์ ๋ ์๋ฅผ ์ ๋ ํฌ์ธํฐ๋ก ์กฐํฉํด ํฉ์ ํ๋จํ๋ ํฌํฌ์ธํฐ ๊ธฐ๋ฒ์ผ๋ก 3Sum์ ํด๊ฒฐํฉ๋๋ค. ์ค๋ณต ์ ๊ฑฐ ๋ก์ง๋ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n^2) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ ๋ ฌ ์ดํ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํตํด ํ์ ์ฐ์ฐ์ ์ค์ด๊ณ , ๊ฐ i๋ง๋ค l/h๋ฅผ ์ด๋์์ผ ์ ์ฒด๋ฅผ ๋ ํฌ์ธํฐ๋ก ํ์ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Backtracking, DFS
- ์ค๋ช : ์ฌ๊ท ํ์์ผ๋ก ๊ฐ๋ฅํ ์กฐํฉ์ ํ์ํ๊ณ ์ ํจํ ํด๋ฅผ ๋ฐฑํธ๋ํน์ผ๋ก ๊ฑธ๋ฌ๋ด๋ ๊ตฌ์กฐ์ ๋๋ค. ์์ ์ง์ ๋ถํฐ ํ๋ณด๋ฅผ ์ฐจ๋ก๋ก ์๋ํ๊ณ ํฉ์ด ํ๊น์ ๋์ผ๋ฉด ์ฌ๊ท๋ฅผ ์ค๋จํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(N^T/M) |
| Space | O(T/M) |
ํผ๋๋ฐฑ: ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ์ค๋ณต ์์ด ํ์ํ๋ DFS ๋ฐฉ์์ด๋ค. ๊ฐ์ง์น๊ธฐ ์กฐ๊ฑด(sum > target)์ผ๋ก ์ผ๋ถ ๊ฒฝ์ฐ๋ฅผ ์ ๊ฐํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming
- ์ค๋ช : ๋ฌธ์ ๋ ๋ฌธ์์ด์ ํด๋ ๋ฐฉ๋ฒ ์๋ฅผ ์ด์ ์ํ์ ํด๋ฅผ ๋ฐํ์ผ๋ก ํ์ฌ ์ํ๋ฅผ ๊ณ์ฐํ๋ DP ์ ๊ทผ์ด๋ค. 1๊ธ์ ๋๋ 2๊ธ์ ๋จ์๋ก ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ๋์ ํฉ์ ๊ตฌํ๋ ์ ํ์ ์ธ DP ๋ฌธ์ ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ํ ์๋ฆฌ ์ ๊ฐ๋ฅ ์ฌ๋ถ์ ๋ ์๋ฆฌ ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์กฐํฉํด ์ํ๋ฅผ ๊ฐฑ์ ํ๋ ํ์ค ํ์ด์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Greedy
- ์ค๋ช : ๋ฐฐ์ด์ ์ํํ๋ฉฐ ํ์ฌ ๊ตฌ๊ฐ์ ์ต๋๊ฐ์ ๋์ ํด ์ด์ ์ํ์ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ๋ถ๋ถ๋ฐฐ์ด์ ์ต๋ํฉ์ ๊ตฌํ๋ค. ํผ๋ณด๋์น์ฒ๋ผ ์ง์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ๋ค์ ๊ฐ์ ๊ณ์ฐํ๋ DP(๋๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ๊ทธ๋ฆฌ๋ ํํ) ํจํด์ ์ํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ์ด์ ๋์ ํฉ๊ณผ ํ์ฌ ์์๋ฅผ ๋น๊ตํด ์ต๋ ๊ตฌ๊ฐ ํฉ์ ๊ฐฑ์ ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, Bit Manipulation, Greedy, Divide and Conquer, Hash Map / Hash Set
- ์ค๋ช : ์ ๋ ฅ ์ซ์๋ฅผ ์ด์ง์๋ก ๋ค๋ฃจ๋ฉฐ, ๊ฐ ๋จ๊ณ์์ n์ 2๋ก ๋๋ 1์ ๊ฐ์๋ฅผ ์ธ๋ ๋ฐฉ์์ผ๋ก ๋นํธ๋ฅผ ํ์ธํฉ๋๋ค. ๋นํธ ๋จ์์ ์ง์ ์ ์กฐ์๋ณด๋จ ๋๋์ ์ผ๋ก ์ฐจ๋ก๋ก ํ์ธํ๋ ํจํด์ Bit Manipulation ๊ณ์ด์ ์ํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๊ฐ๋จํ ๋ฐ๋ณต์ผ๋ก ํด๊ฒฐํ๋ ๊ตฌ์กฐ๋ผ Divide and Conquer์ ์์๊ฐ ๋ณด์ผ ์ ์์ต๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(log n) | O(log n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ๊ฐ์ฅ ๊ฐ๋จํ ์๋ฆฌ์ ๊ฐ์ ์ธ๊ธฐ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Greedy, Two Pointers, Hash Map / Hash Set
- ์ค๋ช : ์ ๊ท์์ผ๋ก ๋ฌธ์์ด ์ ์ฒ๋ฆฌ ํ ์ ๋์์ ๋์ผ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก, ๋ ํฌ์ธํฐ๋ก ๋์นญ ๋น๊ตํ๋ Two Pointers ํจํด๊ณผ, ํ์ ์ ํ์ ๋ ์กฐ๊ฑด์์ ์ต์ ๋ถ๋ถ์ ํ์ฉํ๋ Greedy ์ฑ๊ฒฉ์ด ๋ณด์ ๋๋ค. ๋ํ ์ ๋ ฅ ๋ฌธ์์ด์ ๋ฌธ์ ์ ๊ฑฐ ๋ฐ ๋น๊ต ๊ณผ์ ์์ ํด์ ๊ฐ์ ์ถ๊ฐ ์๋ฃ๊ตฌ์กฐ๋ ์ฌ์ฉํ์ง ์์ ํต์ฌ์ ํฌ ํฌ์ธํฐ ๋์นญ ๋น๊ต ์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ์ ์ฒ๋ฆฌ ๋ฌธ์์ด ๊ธธ์ด์ ๋น๋กํ๋ ์ถ๊ฐ ๊ณต๊ฐ๊ณผ ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, Monotonic Stack, DFS, Inorder Traversal
- ์ค๋ช : ์ค์ ์ํ(Inorder Traversal)๋ก ํธ๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉฐ ์ด์ ๊ฐ๊ณผ์ ๋์๋ฅผ ๋น๊ตํด BST ์ฌ๋ถ๋ฅผ ํ์ธ. ์ํ ์์ฒด๋ DFS์ ํ ํํ์ด๊ณ , ์ํ ์ค ๊ฐ์ด ์ฆ๊ฐํ๋์ง ๋ชจ๋ํฐ๋งํ๋ Monotonic ํน์ฑ์ ํ์ฉํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ ์/์ค์ ์ํ์์์ ๋์ ๋น๊ต๋ก BST ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
๋ต์ ์ ์ถ ๋ฌธ์
Week2
Week2์ ๋ชป ํผ ๋ฌธ์ ๋ ๊ฐ์ด ์ ์ถํฉ๋๋ค.
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!