Skip to content

Commit 3f383db

Browse files
authored
Merge pull request #1986 from ZetBe/main
2 parents 9c9c240 + 25e9a07 commit 3f383db

File tree

5 files changed

+184
-0
lines changed

5 files changed

+184
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'''
2+
๋ฌธ์ œ: ๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ฐพ๋Š” ๋ฌธ์ œ
3+
ํ’€์ด: ์ •๋ ฌ ํ›„ ์ธ์ ‘ํ•œ ์›์†Œ๋ผ๋ฆฌ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต ์—ฌ๋ถ€ ํ™•์ธ ์ค‘๋ณต์ด ์—†๋‹ค๋ฉด False ๋ฐ˜ํ™˜
4+
5+
์‹œ๊ฐ„๋ณต์žก๋„: O(n log n)
6+
sort()์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n log n)์ด๊ณ , for๋ฌธ์€ O(n)์ด๋ฏ€๋กœ,
7+
์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n log n)
8+
9+
๊ณต๊ฐ„๋ณต์žก๋„: O(1)
10+
nums.sort()๋Š” ์ œ์ž๋ฆฌ ์ •๋ ฌ์ด๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
11+
๋˜ํ•œ num ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ „์ฒด ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)
12+
13+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋ฆฌ์ŠคํŠธ
14+
15+
๋งŒ์•ฝ ํŒŒ์ด์ฌ์˜ ๋”•ํ…Œ์ด์…˜๊ณผ ๊ฐ™์ด ์กฐํšŒ ์‹œ O(1)์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด,
16+
์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ O(n)์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
17+
'''
18+
19+
class Solution:
20+
def containsDuplicate(self, nums: List[int]) -> bool:
21+
nums.sort()
22+
num = nums[0]
23+
for i in range(1, len(nums)):
24+
if num == nums[i]:
25+
return True
26+
num = nums[i]
27+
return False
28+
29+

โ€Žhouse-robber/ZetBe.pyโ€Ž

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
'''
2+
๋ฌธ์ œ: ์—ฐ์†ํ•œ ์ง‘์ด ์•„๋‹Œ ์ง‘์„ ํ„ธ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ธˆ์•ก์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ
3+
ํ’€์ด: ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
4+
์ดˆ๊ธฐ ๊ฐ’ ์„ค์ • ํ›„,
5+
dp[i] = max(dp[i-2], dp[i-3]) + nums[i] ์ ํ™”์‹ ์„ค์ •
6+
ํ•œ์ง‘, ํ˜น์€ ๋‘์ง‘์„ ๊ฑด๋„ˆ์„œ ํ„ธ์—ˆ์„ ๊ฒฝ์šฐ, ๋‘˜ ์ค‘ ๊ฐ€์žฅ ํฐ๊ฐ’์„ ๊ณ ๋ฆ„
7+
8+
์‹œ๊ฐ„๋ณต์žก๋„: O(n)
9+
์ ์  ์ˆœ์ฐจ์ ์œผ๋กœ dp ๋ฐฐ์—ด์„ ์ฑ„์›Œ๋‚˜๊ฐ€๋ฏ€๋กœ O(n)
10+
๊ณต๊ฐ„๋ณต์žก๋„: O(n)
11+
dp ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๋ฏ€๋กœ O(n)
12+
13+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋ฆฌ์ŠคํŠธ
14+
15+
'''
16+
17+
18+
class Solution:
19+
def rob(self, nums: List[int]) -> int:
20+
dp = [0 for i in range(len(nums))]
21+
if len(nums) == 1:
22+
return nums[0]
23+
elif len(nums) == 2:
24+
return max(nums[0], nums[1])
25+
elif len(nums) == 3:
26+
return max(nums[0], nums[1], nums[0]+nums[2])
27+
28+
dp[0], dp[1], dp[2] = nums[0], nums[1], nums[0]+nums[2]
29+
30+
for i in range(3, len(nums)):
31+
dp[i] = max(dp[i-2], dp[i-3]) + nums[i]
32+
return max(dp[len(nums)-1], dp[len(nums)-2])
33+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'''
2+
๋ฌธ์ œ: ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ์—ฐ์†๋œ ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
3+
ํ’€์ด: ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ํ›„, ์—ฐ์†๋œ ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐ
4+
(์ค‘๋ณต๋œ ๊ฐ’์€ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์ œ๊ฑฐ ํ›„ ์ฒ˜๋ฆฌ)
5+
6+
์‹œ๊ฐ„๋ณต์žก๋„: O(k log k + N) (k๋Š” ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค ๊ฐœ์ˆ˜, N์€ nums์˜ ๊ธธ์ด)
7+
๊ณต๊ฐ„๋ณต์žก๋„: O(N) (๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋Š” nums์˜ ๊ธธ์ด์— ๋น„๋ก€)
8+
9+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋”•์…”๋„ˆ๋ฆฌ, ๋ฆฌ์ŠคํŠธ
10+
'''
11+
12+
13+
class Solution:
14+
def longestConsecutive(self, nums: List[int]) -> int:
15+
d = {}
16+
answ = 1
17+
if len(nums) > 0:
18+
for i in nums:
19+
if i not in d:
20+
d[i] = 0
21+
22+
a = sorted(d.keys())
23+
now = a[0]
24+
an = 1
25+
for i in range(1, len(a)):
26+
t = a[i]
27+
if now+1 == t:
28+
an += 1
29+
else:
30+
an = 1
31+
now = a[i]
32+
answ = max(answ, an)
33+
34+
return answ
35+
return 0
36+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
๋ฌธ์ œ: Top K Frequent Elements
3+
nums ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” k๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ.
4+
ํ’€์ด: ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ์ˆซ์ž์˜ ๋“ฑ์žฅ ๋นˆ๋„๋ฅผ ์ €์žฅํ•œ ํ›„,
5+
๋นˆ๋„์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ƒ์œ„ k๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
6+
7+
์‹œ๊ฐ„๋ณต์žก๋„: O(k log k + n) (n์€ nums์˜ ๊ธธ์ด, k๋Š” ๋ฐ˜ํ™˜ํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜)
8+
์ตœ์•…์˜ ๊ฒฝ์šฐ, O(n log n)์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, k๊ฐ€ ์ž‘์„ ๋•Œ๋Š” O(k log k + n)์ด ๋” ์ ํ•ฉํ•˜๋‹ค.
9+
๊ณต๊ฐ„๋ณต์žก๋„: O(n)
10+
๋”•์…”๋„ˆ๋ฆฌ์— ๊ฐ ์ˆซ์ž์˜ ๋นˆ๋„๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ O(n)์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ „์ฒด ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(n)
11+
12+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋”•์…”๋„ˆ๋ฆฌ, ๋ฆฌ์ŠคํŠธ
13+
'''
14+
15+
16+
17+
import heapq
18+
19+
class Solution:
20+
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
21+
arr = {}
22+
answ = []
23+
a = []
24+
for i in nums:
25+
if i in arr:
26+
arr[i] += 1
27+
else:
28+
arr[i] = 1
29+
30+
a = sorted(arr.items(), key=lambda x:x[1], reverse=True)
31+
for i in range(k):
32+
answ.append(a[i][0])
33+
return answ
34+

โ€Žtwo-sum/ZetBe.pyโ€Ž

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'''
2+
๋ฌธ์ œ: ๋ฐฐ์—ด ์ค‘์—์„œ ๋‘ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๊ฐ€ ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ
3+
ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋‘๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋‹ต์€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.
4+
ํ’€์ด: ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ์ˆซ์ž์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•œ ํ›„,
5+
ํƒ€๊ฒŸ ๋„˜๋ฒ„์—์„œ ๊ฐ ์ˆซ์ž๋ฅผ ๋บ€ ๊ฐ’์ด ๋”•์…”๋„ˆ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธ
6+
๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ˆซ์ž๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ๋“ฑ์žฅํ•˜๋Š”์ง€ ํ™•์ธ
7+
(์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ ๊ณ ๋ ค)
8+
9+
์‹œ๊ฐ„๋ณต์žก๋„: O(n)
10+
๋”•์…”๋„ˆ๋ฆฌ์— ๊ฐ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ O(n), ๊ฒน์น˜์ง€ ์•Š์€ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)
11+
๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด ํƒ€๊ฒŸ ๋„˜๋ฒ„์—์„œ ๋บ€ ๊ฐ’์ด ๋”•์…”๋„ˆ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š”๋ฐ O(1)์ด๋ฏ€๋กœ, ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)
12+
13+
๊ณต๊ฐ„๋ณต์žก๋„: O(n)
14+
๋”•์…”๋„ˆ๋ฆฌ์— ๊ฐ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ O(n)์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ „์ฒด ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(n)
15+
16+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋”•์…”๋„ˆ๋ฆฌ
17+
18+
์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•  ๊ฒฝ์šฐ, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n^2)์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
19+
์ตœ์•…์˜ ๊ฒฝ์šฐ, n*(n-1)/2๋ฒˆ์˜ ํƒ์ƒ‰์ด ํ•„์š”ํ•œ๋ฐ, ์ด๋Š” ๊ฒฐ๊ตญ O(n^2)์ด๋‹ค.
20+
'''
21+
22+
# ์ถ”๊ฐ€๋กœ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ฐ€๋…์„ฑ ๊ฐœ์„ ํ•œ ์ฝ”๋“œ
23+
'''
24+
for i in range(len(nums)):
25+
if target - nums[i] in d:
26+
return [d[target-nums[i]][0], i]
27+
if nums[i] not in d:
28+
d[nums[i]] = [i]
29+
30+
else:
31+
32+
d[nums[i]] += [i]
33+
'''
34+
35+
class Solution:
36+
def twoSum(self, nums: List[int], target: int) -> List[int]:
37+
answ = []
38+
d = {}
39+
for i in range(len(nums)):
40+
if nums[i] not in d:
41+
d[nums[i]] = [i]
42+
else:
43+
d[nums[i]] += [i]
44+
print(d)
45+
for i in d.keys():
46+
if target-i in d and len(d[target-i]) == 1 and target != i*2:
47+
answ = [d[target-i][0], d[i][0]]
48+
return answ
49+
if target-i in d and len(d[target-i]) >= 2 and target == i*2:
50+
answ = [d[target-i][0], d[i][1]]
51+
return answ
52+

0 commit comments

Comments
ย (0)