Skip to content

Commit 9cb0d3f

Browse files
committed
week2 - 3sum
1 parent 42a7fa1 commit 9cb0d3f

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Solution:
2+
# ํ•ด๋‹น ๋ฌธ์ œ๋Š” two point ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋•Œ '์ •๋ ฌ'์„ ํ•ด์•ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •ํ™•ํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
3+
# ๊ธฐ์ค€ ๊ฐ’์„ ํ•˜๋‚˜ ์ •ํ•œ ํ›„, ๊ทธ ๊ฐ’์˜ ๋‹ค์Œ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์–‘ ๋์— ํฌ์ธํ„ฐ๋ฅผ ๋‘๊ณ  ์„ธ ์ˆ˜์˜ ํ•ฉ์„ ํ™•์ธํ•œ๋‹ค.
4+
# ๋งŒ์•ฝ ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด, ๋” ํฐ ์ˆ˜๋ฅผ ๋”ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž‘์€ ๊ฐ’ ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ํ•˜๋‚˜ ์˜ฌ๋ฆฌ๊ณ 
5+
# 0๋ณด๋‹ค ํฌ๋ฉด, ๋” ์ž‘์€ ์ˆ˜๋ฅผ ๋”ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํฐ ์ชฝ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‚ฎ์ถ˜๋‹ค.
6+
def threeSum(self, nums: List[int]) -> List[List[int]]:
7+
# nums๋ฅผ ์ •๋ ฌํ•œ ํ›„
8+
nums.sort()
9+
results = set()
10+
11+
for i in range(len(nums) - 2):
12+
if nums[i] > 0:
13+
# ์ •๋ ฌ์„ ํ•œ ํ›„์˜ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜(i๊ฐ€ 0์ผ ๋•Œ์˜ value)๊ฐ€ 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด,
14+
# ๋ฆฌ์ŠคํŠธ ๋‚ด ๋ชจ๋“  ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•ฉ์ด 0์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋งŒ์กฑํ•˜๋Š” ๋‹ต์ด ์—†์œผ๋‹ˆ break
15+
break
16+
17+
if i > 0 and nums[i] == nums[i - 1]:
18+
# ์ด์ „ ์ธ๋ฑ์Šค์˜ ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์ด๋ผ๋ฉด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ ๊ฒƒ์ด๋ฏ€๋กœ
19+
# ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋„˜์–ด๊ฐ„๋‹ค.
20+
continue
21+
22+
# i ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํฌ์ธํ„ฐ ์„ค์ •
23+
left, right = i + 1, len(nums) - 1
24+
25+
while left < right:
26+
result = nums[i] + nums[left] + nums[right]
27+
if result < 0:
28+
# ํ•ฉ์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์™ผ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ์˜ฌ๋ฆฐ๋‹ค
29+
left += 1
30+
elif result > 0:
31+
# ํ•ฉ์ด 0๋ณด๋‹ค ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ๋‚ด๋ฆฐ๋‹ค
32+
right -= 1
33+
else: # result == 0
34+
# ํ•ฉ์ด 0์ด๋ฉด ๋‹ต์ด ๋˜๋ฏ€๋กœ results์— ์ถ”๊ฐ€ํ•˜๊ณ 
35+
# ํฌ์ธํ„ฐ๋“ค์„ ์กฐ์ •ํ•œ๋‹ค.
36+
results.add((nums[i], nums[left], nums[right]))
37+
left, right = left + 1, right - 1
38+
return list(results)

0 commit comments

Comments
ย (0)