Skip to content

Commit 9c61c8c

Browse files
committed
3sum solution
1 parent 075b911 commit 9c61c8c

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

โ€Ž3sum/seongmin36.jsโ€Ž

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
์ค‘์š”ํ•œ ๊ฒƒ์€ ์ง์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.
3+
์ฆ‰, ์ •์ˆ˜๊ฐ€ 0์ด ๋˜๋Š” '์—ญ์›(inverse)'์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
4+
์—ญ์›์„ ๋‹ด์„ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ,
5+
์ฐพ์•„์•ผํ•  ์—ญ์›์€ ์—ฌ๋Ÿฌ๊ฐœ์ผ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋จธ๋‹ˆ ์—ญํ• ๋กœ Set ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
6+
์ค‘๋ณต ์กฐ๊ฑด์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ณด๋‹ค ํฐ ์›์†Œ ์ค‘์—์„œ ๋™์ผํ•œ ๊ฐ’์„ ์ œ์™ธํ•œ๋‹ค.
7+
*/
8+
/**
9+
* @param {number[]} nums
10+
* @return {number[][]}
11+
*/
12+
13+
function threeSum(nums) {
14+
let result = [];
15+
16+
nums.sort((a, b) => a - b);
17+
18+
for (let i = 0; i < nums.length; i++) {
19+
if (nums[i] > 0) break;
20+
21+
// ์ค‘๋ณต ์ œ๊ฑฐ โ†’ i>0 ์ด์›ƒํ•œ ๋‘ ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜๋ฉด skip
22+
if (i > 0 && nums[i] === nums[i - 1]) continue;
23+
24+
let pocket = new Set();
25+
26+
for (let g = i + 1; g < nums.length; g++) {
27+
let find_num = -(nums[i] + nums[g]);
28+
29+
if (pocket.has(find_num)) {
30+
result.push([nums[i], find_num, nums[g]]);
31+
32+
// ์ค‘๋ณต ์ œ๊ฑฐ โ†’ ์ •๋ ฌ๋œ ์ƒํƒœ์—์„œ ๊ฐ™์€ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฉด shift
33+
while (g + 1 < nums.length && nums[g] === nums[g + 1]) {
34+
g++;
35+
}
36+
}
37+
pocket.add(nums[g]);
38+
}
39+
}
40+
return result;
41+
}

0 commit comments

Comments
ย (0)