[dolphinflow86] WEEK 04 Solutions#2741
Conversation
๐ dolphinflow86 ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
ํน์ pivot์ (right + left) // 2 ๊ฐ ์๋ left + (right - left) // 2 ๋ก ํ์ ์ด์ ๊ฐ ์์ผ์ค๊น์?
There was a problem hiding this comment.
์ด๊ฑฐ depth ํจ๋ฌ๋ฏธํฐ ์ฃผ์ง ์๊ณ maxDepth ๋ง์ผ๋ก๋ ๊ตฌํ ๊ฐ๋ฅํ์ธ์! ์ค์ค๋ก ์ฌ๊ทํด์ ํ๋ฉด ์ฝ๋๋ ์์ฒญ ์ค์ผ์ ์์ด์, ์ฑ๋ฅ๋ ๊ฐ๊ณ ์
| right = n-1 | ||
|
|
||
| while left < right: | ||
| pivot = left + (right - left) // 2 |
There was a problem hiding this comment.
pivot = left + (right - left) // 2๋ก ์ค๋ฒํ๋ก๋ฅผ ๋ฐฉ์ดํ์ ๋ถ๋ถ์ด ์ธ์๊น์์ต๋๋ค!
ํ์ด๋ฅผ ๋ณด๊ณ ๋ฌธ๋ Python์์๋ ์ค๋ฒํ๋ก๊ฐ ์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํด์ ธ์ ์ฐพ์๋ณด๋, Python์ int๋ ์์์ ๋ฐ๋(arbitrary precision)๋ผ ๊ฐ์ด ์๋ฌด๋ฆฌ ์ปค์ ธ๋ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋์ง ์๋๋ค๊ณ ํ๋๋ผ๊ณ ์. ๊ทธ๋์ ์ด ๊ฒฝ์ฐ์ (left + right) // 2๋ก ๋จ์ํ๊ฒ ์จ๋ ๊ด์ฐฎ์ง ์์๊น ์ถ์๋ฐ, ์ด๋ป๊ฒ ์๊ฐํ์๋์?
๋ฐ๋๋ก ์ ๋ Java์ธ๋ฐ๋ ์ค๋ฒํ๋ก์ฐ ๋ฐฉ์ด ์์ด (left + right) / 2๋ก ํ์๋๋ผ๊ณ ์ ๐
There was a problem hiding this comment.
์ด๊ฑฐ ๊ทผ๋ฐ
$$n == nums.length$$ $$1 \le n \le 5000$$
nums ๋ฐฐ์ด ๊ธธ์ด๊ฐ ๊ธธ์ด์ผ 5,000์ด๋ผ์
left + right ์ ์ต๋ ๊ฐ์ด 10,000์ด๋ผ์์
์ค๋ฒํ๋ก์ฐ ์ ์ด์ ์ ๊ฒฝ ์์จ๋ ๋ ๊ฑฐ์์
There was a problem hiding this comment.
๋ ๋ถ ๋ค ์ข์ ์ฝ๋ฉํธ ๊ฐ์ฌํฉ๋๋ค!
์ ๊ฐ ์์ ์๋ c++๋ก ์ฃผ๋ก ํ์๋ค๋ณด๋ ์ต๊ด์ ์ผ๋ก ์ ๋ ๊ฒ ์ผ๋ ๊ฒ ๊ฐ์์.
๋ฌธ์ ์กฐ๊ฑด ์ ์ ๋ ๊ฒ ์ํด๋ ๋๊ฒ ๋ค์!
๊ทธ๋ฆฌ๊ณ ํ์ด์ฌ์ int๊ฐ ์์์ ๋ฐ๋๋ผ๋ ์ฌ์ค ์๋ก ์๊ฒ ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค :)
There was a problem hiding this comment.
์๊ฐ๋์ ํ๋ ๋ง๋ถํ์๋ฉด ๋ณดํต ์ค๋ฒํ๋ก์ฐ ์ผ์ด๋์ ๊ด๋ฆฌํด์ผ ํ๋ ๋ฌธ์ ๋ค์ 10^9 + 7 ๋ก ๋๋จธ์ง์ฐ์ฐ ํด์ ๋ฆฌํดํ๋ผ๊ณ ํ๋๋ผ๊ณ ์!
parkhojeong
left a comment
There was a problem hiding this comment.
์๊ณ ํ์ จ์ต๋๋ค. ๋ช๊ฐ์ง ์ปค๋ฉํธ ๋จ๊ฒจ๋ณด์์ต๋๋ค.
| if nums[pivot] < nums[right]: | ||
| right = pivot | ||
| else: | ||
| left = pivot + 1 |
There was a problem hiding this comment.
์ข๋ ์ต์ ํ ํ๋ค๋ฉด ์ด ๋ก์ง์ ์ถ๊ฐํด๋ณผ ์ ์์ ๊ฑฐ ๊ฐ์ต๋๋ค.
if nums[left] < nums[pivot] < nums[right]:
return nums[left]
There was a problem hiding this comment.
@parkhojeong ์ค.. ์๊ฐํ์ง ๋ชปํ๋๋ฐ ์ข์ ์ต์ ํ ํฌ์ธํธ๋ค์!
์๋ ค์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
| else: | ||
| left = pivot + 1 | ||
|
|
||
| return nums[right] |
There was a problem hiding this comment.
nit: right ๋ณด๋จ left๊ฐ ์ฝ๊ฐ ๋ ์์ฐ์ค๋ฌ์ด(?) ๊ฐ์ธ์ ์ธ ๋๋์ด ์๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
| return nums[right] | |
| return nums[left] |
| n = len(board) | ||
| m = len(board[0]) | ||
| w = len(word) | ||
|
|
There was a problem hiding this comment.
n, m, w ๋ณด๋จ ์๋ฏธ ์๋ ๋ค์ด๋ฐ ์ฌ์ฉํ๋๊ฒ ์ธ์ง ๋ถํ๋ฅผ ์ค์ฌ์ค ์ ์์ ๊ฑฐ ๊ฐ์ต๋๋ค.
| # Early return if the board contains fewer cells than the word length. | ||
| if n * m < w: return False |
There was a problem hiding this comment.
๊ผผ๊ผผํ๊ฒ ์ต์ ํ ํด์ฃผ์ จ๋ค์.
|
|
||
| curr.next = list1 if list1 else list2 | ||
|
|
||
| return dummy.next |
There was a problem hiding this comment.
dummy ๋ ๊ด์ฐฎ์๋ฐ ์๋ฏธ๋ฅผ ์กฐ๊ธ ๋ ๋ด์ ๋ค์ด๋ฐ์ด๋ฉด ์ด๋จ๊น ์ถ์ต๋๋ค.
| while left < right: | ||
| pivot = left + (right - left) // 2 |
There was a problem hiding this comment.
์ค์ง์ ์ผ๋ก left, right์ ์ค๊ฐ์ ํด๋นํ๋ mid ๊ฐ์ด ๋ค์ด๊ฐ์ mid ๊ฐ์ ๋ณ์๋ช ์ ์ฐ๋๊ฒ ์ด๋จ๊น ์ถ์ต๋๋ค. ์ดํ ์ญํ ๋ก์ pivot์ผ๋ก ์ฌ์ฉํ๋ ๊ฑฐ๋ผ์์.
์ค ๋ต ์ด๊ฒ ๋ซ๊ฒ ๋ค์! ๋ณ์๋ฅผ ์ด๋ค๋ฉด ๋ ๋ช ์์ ์ผ๋ก ์ ์ด๋ณด๊ฒ ์ต๋๋ค. Co-authored-by: Hojeong Park <parkhj062@gmail.com>
dahyeong-yun
left a comment
There was a problem hiding this comment.
ํ ์ฃผ๊ฐ ๊ณ ์ํ์ จ์ต๋๋ค! ๋ค๋ฅธ ๋ถ๋ค๋ ๋ง์ด ๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ์ จ๋ค์. ์ฝ๋๋ ๊ฐ๊ฒฐํ๊ณ , ์ ๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ํ์์ด์ ํฌ๊ฒ ์ฝ๋ฉํธ ๋๋ฆด ๋ถ๋ถ์ ์๋ ๊ฒ ๊ฐ์์ :)
์ ๋ ์ด๋ฒ ์ฃผ word-search ๊ณผ ๊ฐ์ด ๋ฐฑํธ๋ํน ํด์ผ ํ๋ ๋ถ๋ถ์ด ํญ์ ์ข ์ฝ๊ฒ ์ ๋ ์ค๋ฅด๊ณ ์ ํ๋ฆฌ๋๋ผ๊ณ ์. dolphinflow86 ๋์ ํ๋ฉด์ ๋ค๋ฅธ ์ด๋ ค์์ ์์ผ์ จ๋์ง ๊ถ๊ธํ๋ค์. ๋ค์ ์ฃผ๋ ํ์ดํ ํด๋ด์~!
| return True | ||
|
|
||
| temp = board[row][col] | ||
| board[row][col] = '#' |
There was a problem hiding this comment.
์ถ๊ฐ ๊ณต๊ฐ ์์ด ์์๋ฌธ์๋ก ๋์ฒด ํ๋ค๊ฐ ๋ณต๊ตฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค์ ๐๐ผ
There was a problem hiding this comment.
์ค์ ๋ก ๋๋ ค๋ณด๋ 4000ms ์ ๋ ๋์ค๋๋ฐ ์กฐ๊ธ ๋ ์ต์ ํ ํด๋ณด์ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Backtracking, Hash Map / Hash Set
- ์ค๋ช : ์ฝ์ธ ๊ตํ ๋ฌธ์ ์์ ๊ฐ ๋จ์ ๊ธ์ก์ ๋ํด ์ต์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ์ฌ๊ท๋ก ํ์ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (memo)ํ์ฌ ์ค๋ณต ํ์์ ์ค์ด๋ ํจํด์ด๋ค. ๋ํ ๋ชจ๋ ์ฝ์ธ ์กฐํฉ์ ์๋ํ๋ ํํ์ด๋ฏ๋ก ๋ฐฑํธ๋ํน์ ํน์ง๋ ํฌํจ๋๋ฉฐ, DP์ ์ฌ๊ท์ ๊ตฌํ์ธ ํ๋ค์ด ๋ฐฉ์์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(amount * len(coins)) |
| Space | O(amount) |
ํผ๋๋ฐฑ: ์ํฅ์์ด ์๋ ํ๋ค์ด ๋ฐฉ์์ผ๋ก ์ค๋ณต ์๋ธ๋ฌธ์ ๊ณ์ฐ์ ์ค์ธ๋ค. ๊ทธ๋ฌ๋ ์ต์ ์ ๊ฒฝ์ฐ ๊ฐ ๋จ์ ๊ธ์ก์ ๋ํด ๋ชจ๋ ๋์ ์ ์๋ํ๋ฏ๋ก O(amount * len(coins))์ ์๊ฐ๋ณต์ก๋๊ฐ ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Binary Search
- ์ค๋ช : ๋ฐฐ์ด์ ์ด์ง ํ์์ผ๋ก ์ ๋ฐ์ผ๋ก ์ค์ด๋ฉฐ ํ์ ๋ ์ ๋ ฌ ๋ฐฐ์ด์์ ์ต์๊ฐ์ ์์น๋ฅผ ์ฐพ๋๋ค. ๊ฐ ์ํ์์ ์ค๊ฐ ๊ฐ๊ณผ ๋ ๊ฐ์ ๋น๊ตํด ์ข์ธก ๋๋ ์ฐ์ธก ๊ตฌ๊ฐ์ผ๋ก ๋ฒ์๋ฅผ ์ถ์ํ๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(log n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ๊ตฌํ์ ํ์ดํ์ ์งํ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ ๋น๊ต๋ก ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ ์ ๋๊ฐ ๊ตฌ๊ฐ์ ๋ฐ์ผ๋ก ๋๋ ํ์ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Depth-First Search, Binary Search
- ์ค๋ช : ์ฃผ์ ๋ก์ง์ด DFS๋ก ํธ๋ฆฌ๋ฅผ ๊น์ด ์ฐ์ ์ํํ๋ฉฐ ๊ฐ ๊ฐ์ง์ ๊น์ด๋ฅผ ํ์ํ๊ณ ์ต๋๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ DFS ํจํด์ ํด๋นํฉ๋๋ค. ํธ๋ฆฌ์ ํ์๊ณผ ๊น์ด ๊ด๋ฆฌ๋ก ์๊ณ ๋ฆฌ์ฆ์ด ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(N) | O(n) | โ |
| Space | O(H) | O(h) | โ |
ํผ๋๋ฐฑ: ๋ฆฌํ๊น์ง ๋ฐฉ๋ฌธํด์ผ ํ๋ฏ๋ก ๋ ธ๋ ์์ ๋น๋กํ๋ ์๊ฐ๊ณผ ์ฌ๊ท ํธ์ถ ์คํ์ ์ต๋ ๊น์ด๋ฅผ ๊ณต๊ฐ๋ณต์ก๋๋ก ๊ฐ์ง๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Merge Sort (not listed), Linked List
- ์ค๋ช : ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๋ณํฉํ๋ ๋ฐฉ์์ผ๋ก, ์์ ๊ฐ์ ๋ ธ๋๋ฅผ ์ฐจ๋ก๋ก ์ ํํด ์ ๋ฆฌ์คํธ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉฐ ํ์ชฝ์ด ๋๋๋ฉด ๋๋จธ์ง๋ฅผ ์ฐ๊ฒฐํ๊ณ ์๊ฐ ๋ณต์ก๋๋ O(N+M)์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(m + n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ณํฉํ๋ฉฐ, ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ด ๋ ธ๋ ์ฐ๊ฒฐ๋ง ์ํํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Backtracking, Depth-First Search
- ์ค๋ช : ๋ฐฑํธ๋ํน์ผ๋ก DFS๋ฅผ ์ด์ฉํด ๋ณด๋์์ ๋จ์ด๋ฅผ ์ฐพ๋ ๊ตฌ์กฐ์ด๋ฉฐ, ์ธ์ ํ ์นธ์ ์ํํ๋ฉฐ ๋ง๋์ง ์ฌ๊ท์ ์ผ๋ก ์๋ํ๊ณ ๋๋๋ฆฌ๋ ๋ฐฉ์์ด ํต์ฌ์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(N * 4^L) |
| Space | O(L) |
ํผ๋๋ฐฑ: ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ์ํด ์ฌ๋ฃฐ ํ์๊ณผ ์ฌํ์์ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ ์ง์์ ์ผ ์ ์๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
์ฝ๋ฉํธ ๊ฐ์ฌํฉ๋๋ค! ์ ๋ ๋ฐฑํธ๋ํน ํ๋๊ฑฐ๋, top down DP๋ ๊ฐ๋์ ํผ๋์ด ์ค๋๋ผ๊ณ ์, ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ณ์ ํ์ด๋ณด๋ฉด ์ด๋์๊ฐ ํจํด์ด ์ข ๋ณด์ด์ง ์์๊น ํฉ๋๋ค. ํ ์ฃผ๊ฐ ๊ณ ์ ๋ง์ผ์ จ๊ณ ๊ฐ์ด ํ์ดํ ํ์์ฃ ! |
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!