[JeonJe] WEEK 05 Solutions#2767
Conversation
๐ JeonJe ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Greedy, Two Pointers
- ์ค๋ช : ์ต์ ๊ฐ๊ฒฉ์ ๋์ ์ถ์ ํ๋ฉฐ ํ์ฌ ๊ฐ๊ฒฉ๊ณผ์ ์ฐจ์ด๋ฅผ ํตํด ๊ฐ์ฅ ํฐ ์ด์ต์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ผ๋ก, ํ ๋ฒ์ ์ํ๋ก ์ต์ ํด๋ฅผ ์ป๋ ๊ทธ๋ฆฌ๋ ํจํด๊ณผ ๋ฌธ์ ์ ์ธ๋ฑ์ค ์์๋ฅผ ๋ ํฌ์ธํฐ์ฒ๋ผ ํ์ฉํ๋ ํํ๋ฅผ ๋ณด์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ์ต์ ๊ฐ๊ฒฉ์ ์ถ์ ํ๊ณ ๊ฐ ๋ ์ ์ด์ต์ ๋น๊ตํด ์ต๋๊ฐ์ ๊ตฌํ๋ ํ์ค ํ์ด์ด๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Greedy, Hash Map / Hash Set
- ์ค๋ช : ๋ฌธ์์ด ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ๋ฐฉ์์์ ๊ธธ์ด์ ๊ตฌ๋ถ์๋ฅผ ์ด์ฉํ ์์ฐจ์ ํ์ฑ์ด ํต์ฌ์ด๋ค. ๋จ์ํ ํฌ๋งท์ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ํ๋ฆ์ ํจํด์ Greedy(ํ์์ ์ด์ง ์์ง๋ง ์ง๊ด์ ์์ฐจ ์ฒ๋ฆฌ)์ ๋ฌธ์์ด ์กฐ์/ํด์ ์์ด๋ ๊ตฌํ๋๋ ํจํด์ผ๋ก ๋ณผ ์ ์์ผ๋ฉฐ, ๋ฌธ์์ด ๊ธธ์ด ์ ๋ณด๋ฅผ ์ด์ฉํด ๊ตฌ๊ฐ์ ๋ถ๋ฆฌํ๋ ๋ก์ง์ด ํต์ฌ์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution.encode โ Time: โ O(n) โ O(total length of all strings) / Space: โ O(n) โ O(total length of all strings)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(total length of all strings) | โ |
| Space | O(n) | O(total length of all strings) | โ |
ํผ๋๋ฐฑ: ๊ธธ์ด ์ ๋์ฌ ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ ๊ตฌ๋ถ์๋ฅผ ์ด์ฉํด ๋์ฝ๋ฉํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution.decode โ Time: O(total length of encoded string) / Space: O(number of strings + total length of strings)
| ๋ณต์ก๋ | |
|---|---|
| Time | O(total length of encoded string) |
| Space | O(number of strings + total length of strings) |
ํผ๋๋ฐฑ: ์ธ๋ฑ์ค ๊ธฐ๋ฐ ํ์ฑ์ผ๋ก ์ ํํ ๋ณต์์ด ๊ฐ๋ฅํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Hash Map / Hash Set, Sorting
- ์ค๋ช : ๋ฌธ์์ด์ ๊ฐ ๋ฌธ์์ด์ ๊ธ์ ์ ๋ ฌ ํ ๊ฐ์ ์ ๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง ๋ฌธ์์ด๋ค์ hashmap์ ๋ชจ์ ๊ทธ๋ฃนํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ํด์๋งต์ผ๋ก ํค(์ ๋ ฌ๋ ๋ฌธ์์ด)๋ณ๋ก ๊ฐ(์๋ ๋ฌธ์์ด ๋ฆฌ์คํธ)์ ๋ชจ์ผ๋ ํจํด์ด๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n * k log k) | O(n * k log k) | โ |
| Space | O(n * k) | O(n + k) | โ |
ํผ๋๋ฐฑ: ์ ๋ ฌ๋ ๋ฌธ์ ๋ฐฐ์ด์ ํด์๋งต ํค๋ก ์ฌ์ฉํด ์ ๋๊ทธ๋จ ๊ทธ๋ฃนํ๋ฅผ ๊ตฌํํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Trie
- ์ค๋ช : ํธ๋ผ์ด(Trie) ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํด ๋จ์ด์ ์ ๋์ฌ ๋งค์นญ์ ๊ตฌํํ ์ฝ๋๋ก, ๊ฐ ๋ฌธ์๋ณ๋ก ์์ ๋ ธ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์/์ฝ์ ์ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ผ์ด ํจํด์ ํด๋นํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(L) |
| Space | O(26 * number of nodes) |
ํผ๋๋ฐฑ: ๋ฐฐ์ด ๊ธฐ๋ฐ ์์ ๋ ธ๋์ ๋ ์ฌ๋ถ ํ์๋ก ๋น ๋ฅธ ๊ฒ์์ ์ ๊ณตํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
- ํจํด: Dynamic Programming, Two Pointers, Hash Map / Hash Set, Greedy
- ์ค๋ช : ์ฃผ ์ฝ๋์์ ํต์ฌ์ DP ๋ฐฐ์ด๋ก ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋์ ๊ณํ๋ฒ์ด๋ฉฐ, ๋ค์์๋ถํฐ ์ฑ์ ์ ์ฒด ๊ตฌ๋ฌธ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค. ๋ํ startsWith๋ฅผ ์ด์ฉํด ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฒ์ฌํ๊ณ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ์ฌ์ฌ์ฉํ๋ฏ๋ก DP์ ์ ํ์ ํจํด์ด ๋๋ฌ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ฃผ์์ top-down ์ฌ๊ท ์ญ์ ๋ฉ๋ชจ์ด์ ์ด์ ์ผ๋ก DP์ ๋ค๋ฅธ ๊ตฌํ์ ๋ณด์ฌ์ค๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n * m * L) | O(n * m) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ๋ค์์ ์์ผ๋ก dp๋ฅผ ์ฑ์ฐ๋ ์ ํ์ ํ์ด๋ก ์ถฉ๋ถํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
parkhojeong
left a comment
There was a problem hiding this comment.
์๊ณ ํ์ จ์ต๋๋ค. ๋ช๊ฐ์ง ์ปค๋ฉํธ ๋จ๊ฒจ๋ณด์์ต๋๋ค.
| for (int sellDay = 1; sellDay < n; sellDay++) { | ||
| minPrice = Math.min(minPrice, prices[sellDay]); | ||
| maxProfit = Math.max(maxProfit, prices[sellDay] - minPrice); | ||
| } |
There was a problem hiding this comment.
sellDay ๋ณ์๋ช ์ง๊ด์ ์ด์ด์ ์ข์ ๊ฑฐ ๊ฐ๋ค์
| for (int i = n - 1; i >= 0; i--) { | ||
| for (String word : wordDict) { | ||
| // startsWith(word, i)๋ substring ์์ด i๋ฒ์งธ๋ถํฐ ๋น๊ตํ๋ค | ||
| if (s.startsWith(word, i) && dp[i + word.length()]) { | ||
| dp[i] = true; | ||
| break; | ||
| } | ||
| } | ||
| } | ||
|
|
||
| return dp[0]; | ||
| } |
There was a problem hiding this comment.
์์์๋ถํฐ ๋์ ํด์ ํธ๋ ๋ถ๋ค์ด ๋ง์๋๋ฐ ๋ฐ๋๋ก ํธ์ ์ ํฅ๋ฏธ๋ก์ ์ต๋๋ค. ์์์๋ถํฐ ํธ๋ ๊ฒ๋ ๊ณ ๋ คํ์ จ์ ๊ฑฐ ๊ฐ์๋ฐ ๋ค์์๋ถํฐ ํธ์ ์ด์ ๊ฐ ์์ผ์ค๊น์?
There was a problem hiding this comment.
์ฌ๊ท ํ์์ ํ๋ค์ด ๋ฐฉ์์ผ๋ก ๋จผ์ ํ๋ค๋ณด๋, ๋ฐํ
์
๋ฐฉ์๋ ์์ฐ์ค๋ฝ๊ฒ ๋ค์์ ์ ๋ฐฉํฅ์ผ๋ก ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
๋ค๋ฅธ ๋ถ๋ค๊ป์๋ ์ด๋ป๊ฒ ํ์ดํ์
จ๋์ง ํ ๋ฒ ์ดํด๋ด์ผ๊ฒ ๋ค์.
๋ฆฌ๋ทฐ ๊ฐ์ฌํฉ๋๋ค!!
| if (node.children[c - 'a'] == null) { | ||
| node.children[c - 'a'] = new TrieNode(); | ||
| } | ||
| node = node.children[c - 'a']; |
There was a problem hiding this comment.
children[c - 'a'] ๋ TrieNode์ ์ธ๋ถ ๊ตฌํ์ ๊ฐ๊น์ด๋ฐ Trie์ c - 'a'๊ฐ ์ฌ๋ฌ ์ฝ๋์ ๊ฑธ์ณ ๋ํ๋๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. TrieNode์์ node.getChildren(c) ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๊ณตํ๋ ๊ฑด ์ด๋จ๊น์?
There was a problem hiding this comment.
๋ฏธ์ฒ ์๊ฐ ๋ชปํ๋ ๋ถ๋ถ์ธ๋ฐ, ํจ์๋ก ๊ฐ์ธ๋ฉด ๊ฐ๋
์ฑ๋ ๋ํ๊ณ ์ค์๋ ์ค์ผ ์ ์์ ๊ฒ ๊ฐ๋ค์.
๊ฐ์ฌํฉ๋๋ค!
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!