[JeonJe] WEEK 06 Solutions - #2780
Conversation
๐ JeonJe ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
์ ์๊ฐ์ while ์์ area ๊ณ์ฐ์ ๋งจ ์์ชฝ์ผ๋ก ๋์ด ์ฌ๋ฆฌ๋ฉด while๋ฌธ๋ฐ์ ์ฐ์ฐ์ ํ์ง ์์๋ ๋ ๊ฒ ๊ฐ์์!
๊ทธ๋์ 0์ผ๋ก ์ด๊ธฐํ ํ๋๊ฑฐ์ฃ .
ํ๋ฒ ๊ณ ๋ คํด๋ณด์๋๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
์ง๊ธ์ left์ right๊ฐ ๊ฐ์, ์ฆ ํ๋จ๋ถ๊ฐ ๊ธธ์ด๊ฐ 0์ธ ๋๋น๊น์ง ๊ณ์ฐํ๊ฒ ๋๋๊ฒ๋ ์๊ตฌ์
There was a problem hiding this comment.
๋ฆฌ๋ทฐ ํด์ฃผ์ ๋ถ๋ถ ์ ์ฉํ๋ ๊ณ์ฐ ํ์๋ 1๋ฒ ์ค์ด๋ค๊ณ ์ฝ๋๋ ํจ์ฌ ๊น๋ํด์ง๋ค์.
int answer = 0;
while (left < right) {
answer = Math.max(answer, calWaterArea(height, left, right)); // ๊ณ์ฐ ๋จผ์
if (height[left] <= height[right]) left++; else right--; // ๊ทธ ๋ค์ ์ด๋
}๋ฆฌ๋ทฐ ๊ฐ์ฌํฉ๋๋ค!!
There was a problem hiding this comment.
๊ฝค๋ ๊น๋ํ๊ฒ ์ ํด๊ฒฐํ์ จ๋ค์!!
There was a problem hiding this comment.
๊น๋ํ DFS ํ์ด์๋ค์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers
- ์ค๋ช : ์ผ์ชฝ/์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๊ฒฝ๊ณ์์ ๊ฐ๋ฅํ ์ฉ์ ์ ๊ณ์ฐํ๊ณ , ๋ ์์ ๋ฒฝ์ ์ํด ํฌ์ธํฐ๋ฅผ ํ ์นธ์ฉ ์ด๋์ํค๋ ๋ฐฉ์์ผ๋ก ์ต๋ ๋ฉด์ ์ ๊ตฌํ๋ค. ์ด๋ ๋ ํฌ์ธํฐ ํจํด์ ์ ํ์ ์ธ ํ์ด์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ์ผ์ชฝ/์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ํ ์นธ์ฉ ์์ง์ด๋ฉฐ ๋ชจ๋ ๊ฐ๋ฅํ ๊ตฌ๊ฐ์ ํ์ํ๋ค. ๋ณด์กฐ ํจ์ ์์ด๋ ๋ ํฌ์ธํฐ๋ง์ผ๋ก ์ ํ ์๊ฐ์ ํด๊ฒฐ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Trie, Backtracking, Depth-First Search
- ์ค๋ช : Trie๋ฅผ ์ด์ฉํด ๋จ์ด๋ฅผ ์ ์ฅํ๊ณ , '.'์์ ๋งค์น๋ฅผ dfs๋ก ํ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ถ๋ถ์ ์ผ๋ก ๋ฐฑํธ๋ํน(lazy branching)ํ๋ ํจํด์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ Trie์ DFS(๋ฐฑํธ๋ํน ์ฑ๊ฒฉ ํฌํจ)์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: WordDictionary.addWord โ Time: O(L) / Space: O(TotalNodes)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(L) |
| Space | O(TotalNodes) |
ํผ๋๋ฐฑ: ์ ์์ ์ธ ํธ๋ผ์ด ๊ตฌํ์ผ๋ก ๊ฒ์ ์ '.'๊ฐ ์์ ๋ ๋ถ๊ธฐ ํ์์ผ๋ก ํด๊ฒฐํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: WordDictionary.search โ Time: O(26^d) / Space: O(TotalNodes)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(26^d) |
| Space | O(TotalNodes) |
ํผ๋๋ฐฑ: ๊น์ ์ฌ๊ท ํธ์ถ์ด ๋ค์ ๋นํจ์จ์ ์ผ ์ ์์ง๋ง ์ ์ฝ ๋ด์์ ์๋ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search, Dynamic Programming
- ์ค๋ช : ์ฃผ ์ฝ๋์ ํต์ฌ์ ์ด์ง ํ์์ผ๋ก LIS์ ๋๊ฐ ๋ฐฐ์ด์ ๊ด๋ฆฌํ๊ณ ๊ธธ์ด๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก O(n log n) ํด๊ฒฐ์ฑ ์ ์ ์ํ๋ค. ๋ํ ์ฃผ์์ ์๋ O(n^2) DP๋ ๋ถ๋ถํด๋ฅผ ์ฌ๊ตฌํํด LIS ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ์ ํ์ ์ธ DP ํจํด์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution.lengthOfLIS โ Time: โ
O(n log n) โ O(n log n) / Space: โ
O(n) โ O(n)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n log n) | O(n log n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ๋ฐฐ์ด์ ๋๊ฐ ํ๋ณด๋ฅผ ์ด๋ถํ์์ผ๋ก ์ฐพ์ ์ ๋ฐ์ดํธํ๋ ํ์ค ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution.lengthOfLIS โ Time: โ
O(n^2) โ O(n^2) / Space: โ O(n^2) โ O(n)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n^2) | O(n^2) | โ |
| Space | O(n^2) | O(n) | โ |
ํผ๋๋ฐฑ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐ ๋ถ๋ถ์์ด์ DP๋ก ๊ตฌํํ์์ง๋ง ์๊ฐ๋ณต์ก๋๊ฐ ํผ.
๊ฐ์ ์ ์: ํ์ฌ์ ์ต์ ํ์ด๋ก ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Greedy, Monotonic Stack
- ์ค๋ช : ์คํ์ด๋ด ์์๋ก 4๋ฐฉํฅ์ผ๋ก ํ ๋ฐํด์ฉ ์ขํ๊ฐ๋ฉฐ ์์๋ฅผ ์์งํ๋ ๋ฐฉ์์ ์ข์ฐ์ํ ์์ผ๋ก ํฌ์ธํฐ๋ฅผ ์ด๋ํ๋ ์ ํ์ ์ธ Two Pointers ํจํด์ด๊ณ , ๊ฐ ๊ฒฝ๊ณ์์ ๊ฒฝ๊ณ์ ์ ํ ์นธ์ฉ ์์ชฝ์ผ๋ก ์ขํ๊ฐ๋ฉฐ ์กฐ๊ฑด์ ๊ฐ๋จํ ํ์ธํ๋ ๋ถ๋ถ์ด Greedy ์ฑํฅ์ ๋ณด์ ๋๋ค. ๋ํ ๊ฐ ๋ฐฉํฅ์์์ ์ํ๋ ํน์ ๊ณผ์ ์ ํ ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณตํ๋ ๊ตฌ์กฐ๋ก ์งํ๋๋ฏ๋ก Monotonicํ ๊ฒฝ๊ณ ๊ด๋ฆฌ์๋ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(m * n) | O(n*m) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ๊ฒฝ๊ณ ๋ณ์๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ๋ชจ๋ ์์๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Stack/Queue, Hash Map / Hash Set, Greedy
- ์ค๋ช : ๊ดํธ ๋งค์นญ์ ์คํ์ผ๋ก ๊ตฌํํ๋ ์ ํ์ ์ธ ๋ฌธ์ ๋ก, ์ฌ๋ ๋ฌธ์์ ๋ซ๋ ๋ฌธ์์ ๋งคํ์ ํด์๋งต์ผ๋ก ๊ด๋ฆฌํ๊ณ , ๋ซ๋ ๋ฌธ์๊ฐ ๋์ค๋ฉด ์คํ์ ํ์ ๋น๊ตํ์ฌ ์ ํจ ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค. ์ด ๊ตฌ์กฐ๋ ๋ณดํต Two Pointers๋ Sliding Window๊ฐ ํ์ ์๊ณ , ์คํ ๊ธฐ๋ฐ์ ๋งค์นญ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ํธ์/ํ์ผ๋ก ๋ฌธ์์ด์ ํ ๋ฒ ์ํํ๋ ํ์ค ํ์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
|
|
||
| // tails[k] = ๊ธธ์ด k+1์ธ ์ฆ๊ฐ ๋ถ๋ถ์์ด์ ์ต์ ๋๊ฐ โ ์ค๋ฆ์ฐจ์์ด๋ผ ์ด์ง ํ์ ๊ฐ๋ฅ | ||
| // ์) [1,3,5,2] โ tails=[1,2,5]. ๋ฐฐ์ด ์์ฒด๋ ๋ถ๋ถ์์ด์ด ์๋๊ณ ๊ธธ์ด 3์ด ์ ๋ต | ||
| int[] tails = new int[nums.length]; |
There was a problem hiding this comment.
์ ๋ฏธ๋ฆฌ nums.length ๋ก ๋ฐฐ์ด์ ์ด๊ธฐํํด๋๋ ๊ด์ฐฎ๊ฒ ๋ค์! ์ฌ์ด์ฆ๋ ๋ณ๋๋ก ๊ด๋ฆฌํ๊ณ ์
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!