Skip to content

Commit f78b3ae

Browse files
authored
Merge pull request #2173 from ZetBe/main
[ZetBe] WEEK 05 solutions
2 parents 189ba88 + 3b8d686 commit f78b3ae

File tree

4 files changed

+101
-0
lines changed

4 files changed

+101
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'''
2+
๋ฌธ์ œ: ํ•œ๋ฒˆ์˜ ๊ตฌ๋งค์™€ ํŒ๋งค๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ๊ตฌํ•˜๋ผ.
3+
ํ’€์ด: ์ฃผ์–ด์ง„ ๊ฐ€๊ฒฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ตœ์ €๊ฐ€์™€ ์ตœ๊ณ ๊ฐ€๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉฐ ์ตœ๋Œ€ ์ด์ต์„ ๊ณ„์‚ฐํ•œ๋‹ค.
4+
์ตœ์ €๊ฐ€๋Š” ํ˜„์žฌ ์ตœ์ €๊ฐ€๊ฒฉ๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ€๊ฒฉ์ด ๋‚˜์˜ค๋ฉด ๊ฐฑ์‹ ํ•˜๊ณ ,
5+
์ตœ๊ณ ๊ฐ€๋Š” ํ˜„์žฌ ์ตœ๊ณ ๊ฐ€๊ฒฉ๋ณด๋‹ค ๋†’์€ ๊ฐ€๊ฒฉ์ด ๋‚˜์˜ค๋ฉด ๊ฐฑ์‹ ๋ฐ ์ •๋‹ต์ธ์ง€ ๋น„๊ตํ•œ๋‹ค.
6+
์‹œ๊ฐ„๋ณต์žก๋„: O(n)
7+
๊ณต๊ฐ„๋ณต์žก๋„: O(1)
8+
9+
'''
10+
11+
12+
class Solution:
13+
def maxProfit(self, prices: List[int]) -> int:
14+
ma, mi = prices[0], prices[0]
15+
answ = 0
16+
for i in range(1, len(prices)):
17+
if mi > prices[i]:
18+
mi, ma = prices[i], prices[i]
19+
if ma < prices[i]:
20+
ma = prices[i]
21+
answ = max(answ, ma-mi)
22+
return answ
23+

โ€Žgroup-anagrams/ZetBe.pyโ€Ž

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'''
2+
๋ฌธ์ œ: ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๋“ค์„ ์•„๋‚˜๊ทธ๋žจ๋ผ๋ฆฌ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
3+
ํ’€์ด: ๊ฐ ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜์—ฌ ๋™์ผํ•œ ์•„๋‚˜๊ทธ๋žจ๋ผ๋ฆฌ ๊ฐ™์€ ํ‚ค๋กœ ๋ฌถ์–ด ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅํ•œ ํ›„, ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.(์ด ๋•Œ, ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•จ์œผ๋กœ์จ ์ผ์ข…์˜ ํ‚ค ๊ฐ’์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.)
4+
์‹œ๊ฐ„๋ณต์žก๋„: O(n * k log k) (n์€ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜, k๋Š” ๊ฐ ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด)
5+
๊ณต๊ฐ„๋ณต์žก๋„: O(n)
6+
7+
'''
8+
9+
10+
class Solution:
11+
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
12+
d = {}
13+
14+
for i in strs:
15+
k = ''.join(sorted(i))
16+
if k not in d:
17+
d[k] = []
18+
d[k].append(i)
19+
return list(d.values())
20+
21+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
๋ฌธ์ œ: ํŠน์ • ๋ช…๋ น์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํŠธ๋ผ์ด(Trie) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
3+
ํ’€์ด: ๋‹จ์ˆœํžˆ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
4+
'''
5+
6+
7+
class Trie:
8+
9+
def __init__(self):
10+
self.arr = []
11+
12+
def insert(self, word: str) -> None:
13+
self.arr.append(word)
14+
15+
def search(self, word: str) -> bool:
16+
for i in self.arr:
17+
if i == word:
18+
return True
19+
return False
20+
21+
def startsWith(self, prefix: str) -> bool:
22+
n = len(prefix)
23+
for i in self.arr:
24+
if i[:n] == prefix:
25+
return True
26+
return False
27+
28+
29+
# Your Trie object will be instantiated and called as such:
30+
# obj = Trie()
31+
# obj.insert(word)
32+
# param_2 = obj.search(word)
33+
# param_3 = obj.startsWith(prefix)
34+

โ€Žword-break/ZetBe.pyโ€Ž

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'''
2+
๋ฌธ์ œ: ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์ด ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋“ค๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
3+
ํ’€์ด: ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ๊ฐ ์œ„์น˜๊นŒ์ง€ ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋“ค๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
4+
์‹œ๊ฐ„๋ณต์žก๋„: O(n*m) (n์€ ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด, m์€ ๋‹จ์–ด ์‚ฌ์ „์˜ ๋‹จ์–ด ์ˆ˜)
5+
๊ณต๊ฐ„๋ณต์žก๋„: O(n)
6+
'''
7+
8+
9+
class Solution:
10+
def wordBreak(self, s: str, wordDict: List[str]) -> bool:
11+
dp = [False for i in range(len(s))]
12+
for i in wordDict:
13+
if i == s[:len(i)]:
14+
dp[len(i)-1] = True
15+
16+
for i in range(1, len(s)):
17+
if dp[i-1] == True:
18+
19+
for j in wordDict:
20+
if i+len(j) <= len(s) and j == s[i:i+len(j)]:
21+
dp[i+len(j)-1] = True
22+
return dp[len(s)-1]
23+

0 commit comments

Comments
ย (0)