[JinuCheon] WEEK 02 solutions#2685
Conversation
๐ JinuCheon ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
|
@DaleSeo |
yuseok89
left a comment
There was a problem hiding this comment.
์์ง ํธ์๋ ์ค์ธ ๊ฒ ๊ฐ์ง๋ง, ์ผ๋จ ํ ์์ผ์ด ๋์ด์ ํ์ฌ๊น์ง ๋ฒ์ ์ ๋ฆฌ๋ทฐ ๋จ๊ฒจ๋๋ฆฝ๋๋ค.
2์ฃผ์ฐจ ๊ณ ์๋ง์ผ์
จ์ต๋๋ค !
|
|
||
| # ์๋ก์ด ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด ์ ์ฅ. | ||
| self.memo[n] = self.dfs(n - 1) + self.dfs(n - 2) | ||
| return self.memo[n] No newline at end of file |
There was a problem hiding this comment.
| return self.memo[n] | |
| return self.memo[n] | |
๋ค์ ๊ฐํ์ ์ถ๊ฐํ์ ์ผ ํ ๊ฑฐ์์
| #### O(n log n) | ||
| class Solution: | ||
| def isAnagram(self, s: str, t: str) -> bool: | ||
| return sorted(s) == sorted(t) No newline at end of file |
There was a problem hiding this comment.
| return sorted(s) == sorted(t) | |
| return sorted(s) == sorted(t) | |
๋ค์ ๊ฐํ์ ์ถ๊ฐํ์ ์ผ ํ ๊ฑฐ์์
| return self.memo[n] | ||
|
|
||
| # ์๋ก์ด ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด ์ ์ฅ. | ||
| self.memo[n] = self.dfs(n - 1) + self.dfs(n - 2) |
There was a problem hiding this comment.
์ด ๋ถ๋ถ์ด ํต์ฌ์ธ๋ฐ์.
์ฌ๊ท ํธ์ถ ์์ด ์ด ์ ํ์ ๊ตฌํํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
There was a problem hiding this comment.
@yuseok89 ์ ์๋ ๊ฐ์ฌํฉ๋๋ค!
์ ํ์.. ์ด๋ค ๋ป์ธ์ง๋ ์ ํํ๊ฒ ๋ชจ๋ฅด๊ณ ์์๋๋ฐ ๋๋ถ์ ์ฐพ์๋ณด๊ณ ๊ณต๋ถํ ๊ธฐํ๊ฐ ๋์๋ค์.
๋ฐ๋ปํ ๋ฆฌ๋ทฐ ๊ฐ์ฌํฉ๋๋ค :)
# yuseok89 ๋ ํผ๋๋ฐฑ ๋ฐ์.
# ์ ํ์(recursive relation): ์์ด์ ํญ์ ๊ทธ ์ด์ ํญ๋ค์ ์ด์ฉํด์ ์ ์ํ๋ ์.
# ํจ์ ํธ์ถ ์ค๋ฒํค๋ ์ ๊ฑฐ & ์์ ์ฑ
class Solution3:
def climbStairs(self, n: int) -> int:
if n < 2:
return n
dp = [0] * (n+1)
# set init values
dp[1] = 1
dp[2] = 2
# i ๋ฒ์งธ ๊ณ๋จ ์ค๋ฅด๋ ๊ฒฝ์ฐ์ ์: 1์นธ + 2์นธ ๊ฒฝ์ฐ์ ์์ ํฉ
for i in range(3, n+1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n];There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Greedy, Sorting
- ์ค๋ช : ์ต์ ํด๋ ์ ๋ ฌ ํ ๋ ํฌ์ธํฐ(left, right)๋ก ์ค์บํ๋ Two Pointers ํจํด์ ์ฌ์ฉํฉ๋๋ค. ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํ ์ค๋ณต ๊ฑด๋๋ฐ๊ธฐ๋ ํฌํจ๋๋ฉฐ, ์ ๋ ฌ ์์ฒด๊ฐ ํ์์ ์ ์ ์ด๋ฏ๋ก Greedy ์ฑ๊ฒฉ์ ์ ํ ๋ฐฉ์์ด ๋ํ๋ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n^2) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ ๋ ฌ ํ ๊ฐ i์ ๋ํด ์ผ์ชฝ/์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ์ด๋์ํค๋ฉฐ ์ค๋ณต์ ๊ฑด๋๋ฐ๋ ๋ฐฉ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ O(n^2)๋ก ์ค์๊ณ , ์ค๋ณต ์กฐํฉ์ ์ ๊ฑฐํ๊ธฐ ์ํ ๋ก์ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Greedy
- ์ค๋ช : ํผ๋ณด๋์น ํํ๋ก ๊ณ๋จ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ก, ์ด๊ธฐ ์ฌ๊ท๋ ๋ถํ ์ ๋ณต/์ค๋ณต ์ํ์ด์ง๋ง, ๋ฉ๋ชจ์ด์ ์ด์ ๊ณผ DP ๋ฐฐ์ด๋ก ์ต์ ํ๋๋ ๊ณผ์ ์ด ํต์ฌ์ด๋ค. ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ํฉ์ณ ์ ์ฒด ํด๋ฅผ ๊ตฌํ๋ DP ํจํด์ด ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 3๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution3.climbStairs โ Time: O(n) / Space: O(n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ๋ฉ๋ชจ์ด์ ์ด์ /DP๋ฅผ ์ฌ์ฉํด ํผ๋ณด๋์น ๊ณ์ด์ ๊ณ๋จ ์๋ฅผ ์ ํ ์๊ฐ์ ๊ณ์ฐํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution2.climbStairs โ Time: โ O(1) โ O(n) / Space: O(n)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(1) | O(n) | โ |
| Space | - | O(n) | - |
ํผ๋๋ฐฑ: ํด๋น ์ ๊ทผ์ ์ด๋ฏธ ๊ณ์ฐ๋ ๊ฐ ์ฌ์ฌ์ฉ์ผ๋ก ์ค๋ณต ๊ณ์ฐ์ ํผํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 3: Solution.climbStairs โ Time: O(2^n) / Space: O(n)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(2^n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ง์ ์๊ฐ ๋ณต์ก๋์ ๊น์ ์ฌ๊ท ์คํ์ด ๋ฐ์ํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Two Pointers, Dynamic Programming, Hash Map / Hash Set
- ์ค๋ช : ๋ ํจํด์ ๋์ ๊ณฑ์ ์ด์ฉํ ์ ํ ๋์ ํฉ(๊ณฑ)์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฒ์ด๋ฉฐ, ๋ฐฐ์ด์ ๊ฐ ์์น์ ๋ํด ์ข์ฐ์ ๋์ ๊ฐ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด ์ต์ข ๊ฐ์ ์ป๋ ๋ฐฉ์์ด๋ค. ์ด ๋ฌธ์ ์ ํต์ฌ์ ์ถ๊ฐ ๋ฉ๋ชจ ์์ด ํ ๋ฒ์ ํด๊ฒฐํ๋ ์์ด๋์ด๋ก, DP์ ๋์ ๊ฐ ๊ด๋ฆฌ์ ์์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ข์ฐ ๋์ ๊ณฑ์ ์ด์ฉํด 2-pass๋ก ์ ์กฐํฉ์ ๊ตฌํ๋ ์ต์ ํ๋ ํ์ด๋ฅผ ์ ์ํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Bit Manipulation
- ์ค๋ช : ์ฃผ ์ฝ๋๋ค์ ๋ฌธ์ ๋น๋ ์๋ฅผ ํด์ ๋งต์ผ๋ก ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ, Counter๋ ๋ด๋ถ์ ์ผ๋ก ํด์ ๋งต์ ์ฌ์ฉํฉ๋๋ค. ๋ํ ์ ๋ ฌ ๊ธฐ๋ฐ ํด๋ฒ์ O(n log n)๋ก ๋น๊ตํ์ง๋ง ํจํด์ ์ฃผ๋ก ํด์ ๋งต ์ฌ์ฉ์ ํด๋นํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 3๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution3.isAnagram โ Time: O(n) / Space: O(Alphabet)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(Alphabet) |
ํผ๋๋ฐฑ: ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๋น๋์๋ฅผ ์นด์ดํธํ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution2.isAnagram โ Time: O(n) / Space: O(k)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(k) |
ํผ๋๋ฐฑ: s์์ ๊ฐ ๋ฌธ์๋ฅผ ์ฆ๊ฐ์ํค๊ณ t์์ ๊ฐ์์ํค๋ฉฐ ์ต์ข ๊ฐ์ด ๋ชจ๋ 0์ธ์ง ํ์ธํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 3: Solution.isAnagram โ Time: O(n log n) / Space: O(1)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n log n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ์ ๋ ฌ ์๊ฐ์ ํฌํจํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฐ ํธ์ด์ง๋ง ์ง๊ด์ ์ ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
๋ต์ ์ ์ถ ๋ฌธ์
์ฒ์์ผ๋ก python ์ผ๋ก ํ์ด๋ณด๊ณ ์์ต๋๋ค :)
๊ฐ๊ฒฐํด์ ์ข์๋ฐ, ์ต์ํด์ง๋ ์๊ฐ์ด ํ์ํ๊ฒ ๋ค์.
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!