[ICE0208] WEEK 02 solutions#2680
Conversation
๐ ICE0208 ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Hash Map / Hash Set, Dynamic Programming
- ์ค๋ช : ์ ๋ ฌ ํ i๋ฅผ ๊ณ ์ ํ๊ณ ๋๋จธ์ง์์ Two Sum์ ํด๋ฒ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, j๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ ๋ฐฉ๋ฌธ ๊ฐ๋ค์ Hash Set์ผ๋ก ๊ด๋ฆฌํ๋ค. ๋ถ๋ถ์ ์ผ๋ก ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํ ์กฐ๊ฑด๋ ํฌํจ๋์ด ์์ด, ๋ ํฌ์ธํฐ ๋์ ํด์์ ๊ธฐ๋ฐ์ ํ์์ผ๋ก ๊ตฌํ๋๋ ํจํด์ด ๋ณด์ธ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n^2) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ ๋ ฌ ํ ๋ ์ค์ฒฉ ๋ฃจํ์ ํด์ ์งํฉ์ผ๋ก ์ค๋ณต์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ด๋ค. ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ์์ ํ์ธํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(n^2)์ด๊ณ ์ถ๊ฐ ๊ณต๊ฐ์ ํด์์งํฉ์ผ๋ก O(n)์ด๋ค.
๊ฐ์ ์ ์: ๊ณ ๋ คํด๋ณผ ๋งํ ๋์: ๊ธฐ์ค๊ฐ ๊ณ ์ ์ ํฌํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํด์์ธํธ ์์ด๋ O(n^2) ์๊ฐ๊ณผ O(1) ์ถ๊ฐ ๊ณต๊ฐ์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํ๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Greedy
- ์ค๋ช : ํผ๋ณด๋์น ์ ์ฌ์ dp[i] = dp[i-1] + dp[i-2]๋ก ๊ณ๋จ ์๋ฅผ ๊ตฌํ๋ ๋ํ์ ์ธ DP ๋ฌธ์ ์ด๋ฉฐ, ๊ณต๊ฐ์ 1์ฐจ์ ๋ฐฐ์ด ์์ด ๋ ๋ณ์๋ก ์ต์ ํํ๋ ๊ธฐ๋ฒ์ DP ํจํด์ ํด๋นํฉ๋๋ค. ๊ทธ ์ธ ํน์ ํ์์ด๋ ์ ๋ ฌ ์์๋ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ๋ ๋ณ์๋ง์ผ๋ก ์ด์ฐจ์ ์ ํ์์ ์ํํ๋ฉฐ ํ์ํ ๊ฐ์ ์ป๋๋ค. ๋ฐฐ์ด ์ ์ฒด๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ณต๊ฐ์ ์ ์ฝํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Sliding Window, Hash Map / Hash Set, Dynamic Programming, Greedy, Divide and Conquer, Bit Manipulation, Trie, Union Find, Heap / Priority Queue, BFS, DFS, Backtracking, Monotonic Stack, Binary Search
- ์ค๋ช : ์ฃผ์ ์์ด๋์ด๋ ์ผ์ชฝ ๊ณฑ๊ณผ ์ค๋ฅธ์ชฝ ๊ณฑ์ ๋์ ํด ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ๋ฐฉ์์ผ๋ก, ์ถ๊ฐ ์ ์ฅ๊ณต๊ฐ ์์ด ๋ถ๋ถ๊ตฌ๊ฐ ๋์ ๊ณฑ์ ์ด์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค. ๋ ๋ฒ์ ์ํ๋ฅผ ํตํด ๊ฐ ์์น์ ์ข์ฐ ๋์ ๊ณฑ์ ํฉ์ฑํด ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ข์ฐ ๋์ ๊ณฑ์ ํ ๋ฒ์ ์ํ๋ก ๊ณ์ฐํด ๊ฐ ์์์ ๋ํด ์์ ์ ์ ์ธํ ๊ณฑ์ ์ป๋๋ค. ์ถ๊ฐ ๋ฐฐ์ด ์์ด ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Bit Manipulation, Dynamic Programming, Two Pointers, Sliding Window, Fast & Slow Pointers, BFS, DFS, Backtracking, Divide and Conquer, Union Find, Trie, Monotonic Stack, Heap / Priority Queue, Greedy, Binary Search, Dynamic Programming, Bit Manipulation
- ์ค๋ช : ์ฃผ์ด์ง ์ฝ๋๋ ๊ฐ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋ฑ์ฅ ํ์๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ๊ณ ์ ๋ฐฐ์ด๋ก ์นด์ดํธ๋ฅผ ์ธ๊ณ , ์ต์ข ์ ์ผ๋ก ๋ฐฐ์ด ๋น๊ต๋ก ๋์ผ์ฑ์ ํ๋จํ๋ค. ์ด๋ ํด์ ๋งต ์์ด๋ ๋น๋ ์๋ฅผ ๋น๊ตํ๋ ์ ํ์ ํจํด์ผ๋ก, ๋ฌธ์ ๋น๋ ๊ธฐ๋ฐ ๋น๊ต์ ํด๋นํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n + m) |
| Space | O(1) |
ํผ๋๋ฐฑ: ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋๋ฅผ ๋น๊ตํ๋ ์ ํ์ ์ธ ํด์ ๊ธฐ๋ฐ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Sorting
- ์ค๋ช : ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋ ๋น๊ต๋ก ๋ํ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ฐฉ์์ ํด์ ๋งต(๋๋ Counter)์ ์ฌ์ฉํ ํจํด์ ํด๋นํ๋ค. ๋ํ ์ ๋ ฌ ๋น๊ต ๋ฐฉ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ ์ผ๋ฐ์ ์ธ ํจํด์ผ๋ก ๋ณผ ์ ์๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n + m) |
| Space | O(1) |
ํผ๋๋ฐฑ: ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋๋ฅผ ๋น๊ตํ๋ ์ ํ์ ์ธ ํด์ ๊ธฐ๋ฐ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, Depth-First Search, Divide and Conquer, Hash Map / Hash Set
- ์ค๋ช : ํธ๋ฆฌ๋ฅผ ์ค์ ์ํ ๋น์ทํ ๋ฐฉ์์ผ๋ก ๊ฐ ๋ ธ๋์ ํ์ฉ ๋ฒ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ธํ๊ณ , ๋ถํ ๋ ํ์ ํธ๋ฆฌ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ค. ์ฌ๊ท๋ฅผ ํตํด ์ข์ฐ ์์์ ๊ฐ๊ฐ ๋ค๋ฃฌ๋ค๋ ์ ์์ DFS ๋ฐ ๋ถํ ๋ ๋ฌธ์ ํด๊ฒฐ ํจํด์ด ํจ๊ป ์์ฉํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(h) |
ํผ๋๋ฐฑ: ๊ฐ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๊ณ ๊ฒฝ๊ณ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
| for (int i = 3; i <= n; i++) { | ||
| int curr = prev1 + prev2; // dp[i] | ||
| prev2 = prev1; | ||
| prev1 = curr; | ||
| } | ||
|
|
||
| return prev1; |
There was a problem hiding this comment.
์๋
ํ์ธ์. ์ด๋ฒ ์ฃผ ๋ฆฌ๋ทฐ๋ฅผ ๋งก๊ฒ๋ ์์ฃผ์ ์ด๋ผ๊ณ ํฉ๋๋ค.
์ ๋ memoization ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋๋ฐ,
์ด๋ ๊ฒ ํธ๋ ๋ฐฉ์์ด ์์๋ค์. ์ด๋ฌํ ์๊ฐ์ ์ด๋ ํ ํ๋ฆ์ผ๋ก ๊ฐ์ง๊ฒ ๋์
จ๋ ๊ฒ์ด์ง ๊ถ๊ธํฉ๋๋ค.
There was a problem hiding this comment.
์๋ ํ์ธ์! ์ฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ฐ์ฌํฉ๋๋ค. ๐
์ฃผ์ ๋๊ป์ ๋ง์ํด์ฃผ์ memoization ๋ฐฉ์์ Top-down ํ์ด์ ์ ๊ฐ ์์ฑํ Bottom-up ํ์ด๋ ๊ฐ์ ์ ํ์์ ์ฌ์ฉํ๊ณ , ๊ณ์ฐ ๋ฐฉํฅ๊ณผ ๊ตฌํ ๋ฐฉ์์ด ๋ค๋ฅธ ์ ๊ทผ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก Bottom-up ๋ฐฉ์์ ์ ํธํด์ ์ฒ์์๋ ๋ฐฐ์ด์ ํ์ฉํ tabulation DP ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค. ์ดํ ์ฃผ์์ ๋จ๊ธด ๊ฒ์ฒ๋ผ dp[i]๋ฅผ ๊ตฌํ๊ธฐ ์ํด ํ์ํ ๊ฐ์ ๊ฒฐ๊ตญ ์ง์ ๊ฐ๊ณผ ์ ์ ๊ฐ๋ฟ์ด๋ผ๋ ์ ์ ๋ณด๊ณ , ์ ๋ต์ ๊ตฌํ๊ธฐ ์ํด ๋ฐ๋์ n๋งํผ์ ๋ฐฐ์ด ๊ณต๊ฐ์ด ํ์ํ ๊ฒ์ ์๋๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๊ทธ๋์ dp[i - 1], dp[i - 2]์ ํด๋นํ๋ ๊ฐ๋ง ๋ณ์๋ก ๋ค๊ณ ๊ฐ๋ฉด์ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ด๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค.
๋๋ถ์ ์ ํ์ด๋ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํด๋ณผ ์ ์์์ต๋๋ค. ์ฃผ๋ง์ ์๊ฐ ๋ด์ ์ฝ๋ฉํธ๊น์ง ๋ฌ์์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!