[sangbeenmoon] WEEK 06 Solutions - #2790
Conversation
๐ sangbeenmoon ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Greedy
- ์ค๋ช : ๋ ํฌ์ธํฐ(left, right)๋ฅผ ์ฌ์ฉํด ๊ฒฝ๊ณ์์ ๊ฐ๋ฅํ ๋ฉด์ ์ ๊ณ์ฐํ๊ณ , ๋์ด๊ฐ ์์ ์ชฝ์ ํฌ์ธํฐ๋ฅผ ์ด๋์ํค๋ ๋ฐฉ์์ผ๋ก ์ต์ ํด๋ฅผ ์ฐพ๋ ํจํด์ด๋ฉฐ, ๊ฐ ๋จ๊ณ์์ ํ์ฌ ์ต๋๊ฐ๊ณผ ์กฐ๊ฑด ํ๋จ์ด ํฌํจ๋์ด ์์ด ๊ทธ๋ฆฌ๋ ์ฑํฅ๋ ๋ณด์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ผ์ชฝ/์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ํ์ฌ ๊ตฌ๊ฐ์ ๋์ด๋ฅผ ๊ฐฑ์ ํ๋ค. ๋ ๋์ด ์ค ์์ ์ชฝ์ ๋๋ฆฌ๋ฉด ๋ ํฐ ๋์ด๊ฐ ๋์ฌ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋จ๊ธฐ๊ณ ๋ฒ๋ ค์ง ๋ถ๋ถ์ ์ ๊ฑฐํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Trie, Backtracking
- ์ค๋ช : ๋จ์ด๋ฅผ ํธ๋ฆฌ ํํ๋ก ๊ตฌ์ฑํ๋ Trie(์ ๋์ด ํธ๋ฆฌ) ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ฒ์ ์ '.' ์์ผ๋์นด๋๋ก ๋ชจ๋ ์์ ๋ ธ๋๋ฅผ ์ฌ๊ท ํ์ํ๋ ๋ถ๋ถ์ ๋ฐฑํธ๋ํน์ ํ์ ํ๋ฆ์ผ๋ก ์๋ํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: WordDictionary.addWord โ Time: O(L) / Space: O(N)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(L) |
| Space | O(N) |
ํผ๋๋ฐฑ: ๋ฌธ์๋ณ๋ก ์์ ๋ ธ๋๋ฅผ ๊ตฌ์ฑํ๊ณ ๋์ ๋๋ฌํ๋ฉด is_end ๋ฅผ True๋ก ๋งํนํ๋ค.
๊ฐ์ ์ ์: ์ผ๋ฐ์ ์ธ ์ํ ๋ฐฉ์์ผ๋ก ์ฌ๊ท ๊น์ด๊ฐ ์ฆ๊ฐํ ์ ์์ด ์คํ ์ค๋ฒํ๋ก์ฐ ์ํ์ ๊ณ ๋ คํด ๋น์ฌ๊ท ๊ตฌํ๋ ๊ฒํ ํด๋ณผ ์ ์์ต๋๋ค.
ํ์ด 2: WordDictionary.search โ Time: O(Alphabet^k) / Space: O(H)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(Alphabet^k) |
| Space | O(H) |
ํผ๋๋ฐฑ: ์ (.)์ ์ฌ์ฉํ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ ํ์ ๋น์ฉ์ด ์ปค์ง ์ ์์ต๋๋ค.
๊ฐ์ ์ ์: ์ค์ ์ฌ์ฉ์์ ์ (.)์ ์ฌ์ฉ ๋น์จ์ด ๋ฎ๋ค๋ฉด ํธ๋ผ์ด์ ๊ฐ์ง ์๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ์ต์ ํ ๊ฐ๋ฅ.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Binary Search, Greedy, Monotonic Stack
- ์ค๋ช : ์ต๋ ์ฆ๊ฐ ๋ถ๋ถ์์ด LIS๋ฅผ DP๋ก ํด๊ฒฐํ๋ ๋ถ๋ถ๊ณผ ์ด๋ถํ์์ ์ด์ฉํ ์ต์ ํ(๊ธด ์ฆ๊ฐ ๋ถ๋ถ์์ด์ ๊ธธ์ด๋ฅผ ์ด๋ถํ์์ผ๋ก ๊ด๋ฆฌ)๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ํ ์์๋ฅผ ์ ์งํ๋ฉฐ ์์ด์ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ ๊ทธ๋ฆฌ๋/๋จ์ ๋น๊ต๋ก ๊ตฌํ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 3๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution.lengthOfLIS โ Time: O(n log n) / Space: O(n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n log n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ด๋ถ ํ์์ ์ด์ฉํ LIS ๋ฐฐ์ด ์ ์ง ๋ฐฉ์์ผ๋ก ์ต์ ์ ๊ธธ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution.lengthOfLIS โ Time: O(n^2) / Space: O(n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n^2) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ง๊ด์ ์ด์ง๋ง ์๊ฐ ๋ณต์ก๋๊ฐ ์ปค์ ธ ํฐ ์ ๋ ฅ์์ ๋นํจ์จ์ ์ด๋ค.
๊ฐ์ ์ ์: ํ์ ์ ์ด๋ถํ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๊ถ์ฅ.
ํ์ด 3: Solution.lengthOfLIS โ Time: O(n log n) / Space: O(n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n log n) |
| Space | O(n) |
ํผ๋๋ฐฑ: bisect_left๋ฅผ ์ฌ์ฉํ์ฌ ์ํ์ค์ ์ ์ ํ ์์น๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Depth-First Search, Backtracking, Greedy, Hash Map / Hash Set, Dynamic Programming, Binary Search, Monotonic Stack, Heap / Priority Queue, Divide and Conquer, Union Find, Trie, Bit Manipulation, BFS, DFS, Sliding Window, Fast & Slow Pointers
- ์ค๋ช : ์คํ์ด๋ด ํ๋ ฌ ์ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ฐฉํฅ ์ํ์ ๋ฐฉ๋ฌธ ์ฌ๋ถ ์ถ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ท DFS์ ๋ฐ๋ณต ๋ฃจํ ๋ ๊ฐ์ง ๊ตฌํ์ด ์ ์๋๋ฉฐ, ์ธ์ ์์ ๋ฐฉํฅ ์ ํ๊ณผ ๋ฐฉ๋ฌธ ์ฒดํฌ๋ก ์ํ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution.spiralOrder โ Time: O(m*n) / Space: O(m*n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(m*n) |
| Space | O(m*n) |
ํผ๋๋ฐฑ: ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ถ์ ํ๋ฉฐ ํ ๋ฐฉํฅ์ผ๋ก ์งํํ๊ณ ๋ฒฝ์ ๋ฟ์ผ๋ฉด ๋ฐฉํฅ์ ๋ฐ๊พผ๋ค.
๊ฐ์ ์ ์: DFS ๋ฐฉ์์ ์คํ ๊น์ด๊ฐ ํผ์ ๋ฐ๋ผ ์ฌ๊ท ํ๊ณ๋ฅผ ์ฃผ์. ๋ฐ๋ณต ๊ตฌํ์ผ๋ก ๋ฐ๊พธ๋ฉด ์์ .
ํ์ด 2: Solution.spiralOrder โ Time: O(m*n) / Space: O(m*n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(m*n) |
| Space | O(m*n) |
ํผ๋๋ฐฑ: ๋ช ์์ ์ผ๋ก ํ์ฌ ์์น์ ๋ฐฉํฅ์ ๊ด๋ฆฌํ์ฌ ์ํํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
| node = WordDictionary() | ||
| return node.search(word, i+1) |
There was a problem hiding this comment.
์ด๋ถ๋ถ์ ๋ง๋ ๋จ์ด๊ฐ ์๋ค๋๊ฑฐ๋๊น return False๋ฅผ ํ๋๊ฒ ๋ ๋ง์ง ์์๊น ์๊ฐํด์!
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!