File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // ! ํ๋ค๊ฐ ๋งํ์ AI์ ๋์(ํํธ)์ ๋ฐ์ ์์ฑํ ์ฝ๋์
๋๋ค..
2+
3+ // tc: o(n^2)
4+ // sc: o(n)
5+ const threeSum = function ( nums ) {
6+ const answer = [ ] ;
7+
8+ // ๋จผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
9+ const sortedArr = nums . sort ( ( a , b ) => a - b ) ;
10+
11+ for ( let i = 0 ; i < sortedArr . length ; i ++ ) {
12+ if ( i > 0 && sortedArr [ i ] === sortedArr [ i - 1 ] ) continue ;
13+
14+ let left = i + 1 ;
15+ let right = sortedArr . length - 1 ;
16+
17+ while ( left < right ) {
18+ const sum = sortedArr [ i ] + sortedArr [ left ] + sortedArr [ right ] ;
19+
20+ if ( sum === 0 ) {
21+ answer . push ( [ sortedArr [ i ] , sortedArr [ left ] , sortedArr [ right ] ] ) ;
22+
23+ // ์ค๋ณต ์ฒ๋ฆฌ
24+ // left๊ฐ ๊ฐ๋ฆฌํค๋ ์ซ์๊ฐ ์ด์ ์ซ์์ ๋๊ฐ๋ค๋ฉด ๊ณ์ ํจ์ค
25+ while ( left < right && sortedArr [ left ] === sortedArr [ left + 1 ] ) {
26+ left ++ ;
27+ }
28+ // right๊ฐ ๊ฐ๋ฆฌํค๋ ์ซ์๊ฐ ์ด์ ์ซ์์ ๋๊ฐ๋ค๋ฉด ๊ณ์ ํจ์ค
29+ while ( left < right && sortedArr [ right ] === sortedArr [ right - 1 ] ) {
30+ right -- ;
31+ }
32+ // ๋๊ฐ์ ์ซ์๋ค์ ๋ค ๊ฑด๋๋ฐ์์ผ๋, ์๋ก์ด ์ซ์๋ก ๋์ด๊ฐ
33+ left ++ ;
34+ right -- ;
35+ } else if ( sum < 0 ) {
36+ // 0๋ณด๋ค ์์ผ๋ฉด left๋ฅผ ํค์ (์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด๊ธฐ ๋๋ฌธ)
37+ left ++ ;
38+ } else {
39+ right -- ;
40+ }
41+ }
42+ }
43+
44+ return answer ;
45+ } ;
You canโt perform that action at this time.
0 commit comments