Skip to content

Commit 67ed968

Browse files
committed
add solution: 3sum
1 parent 5db9e87 commit 67ed968

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

โ€Ž3sum/ZetBe.pyโ€Ž

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'''
2+
๋ฌธ์ œ: ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์„ธ ์ˆ˜์˜ ์กฐํ•ฉ์œผ๋กœ ํ•ฉ์ด 0์ด ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ฐพ๊ธฐ
3+
ํ’€์ด: ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ณ ์ •ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋‘ ์ˆ˜๋ฅผ ํˆฌ ํฌ์ธํ„ฐ๋กœ ํƒ์ƒ‰
4+
์‹œ๊ฐ„๋ณต์žก๋„: O(n^2)
5+
๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š”๋ฐ O(n log n), O(n)์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์ˆ˜์— ๋Œ€ํ•ด ํˆฌ ํฌ์ธํ„ฐ๋กœ ๋‚˜๋จธ์ง€ ๋‘ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋ฐ O(n)์ด๋ฏ€๋กœ ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n^2)์ด๋‹ค.
6+
๊ณต๊ฐ„๋ณต์žก๋„: O(1)
7+
์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ „์ฒด ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.
8+
์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ: ๋ฆฌ์ŠคํŠธ
9+
10+
๋ณ„๋„์˜ ํšŒ๊ณ : ์ •๋‹ต์— ์ค‘๋ณต๋œ ์กฐํ•ฉ์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด,
11+
์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ณ ์ •ํ•  ๋•Œ ์ด์ „ ์ˆ˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ , ๋‚˜๋จธ์ง€ ๋‘ ์ˆ˜๋ฅผ ์ฐพ์„ ๋•Œ๋„ ์„ธ ์ˆ˜์˜ ํ•ฉ์ด 0์ผ ๊ฒฝ์šฐ, ๊ฐ ๋‘ ๋™์ผํ•œ ์ˆ˜๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋„๋ก ํ•˜์˜€๋‹ค.
12+
'''
13+
14+
import ast
15+
class Solution:
16+
def threeSum(self, nums: List[int]) -> List[List[int]]:
17+
nums.sort()
18+
answer = []
19+
for i in range(len(nums)-2):
20+
if i > 0 and nums[i-1] == nums[i]:
21+
continue
22+
l, r = i+1, len(nums)-1
23+
while l < r:
24+
if nums[i] + nums[l] + nums[r] == 0:
25+
arr = [nums[i], nums[l], nums[r]]
26+
answer.append(arr[:])
27+
while l < r and nums[l] == nums[l + 1]:
28+
l+=1
29+
while l < r and nums[r] == nums[r - 1]:
30+
r-=1
31+
l += 1
32+
r -= 1
33+
elif nums[i] + nums[l] + nums[r] < 0:
34+
l += 1
35+
else:
36+
r -= 1
37+
38+
39+
40+
41+
return answer
42+
43+

0 commit comments

Comments
ย (0)