File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
longest-common-subsequence Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ *
3
+ * ์ ๊ทผ ๋ฐฉ๋ฒ :
4
+ * - ์ค๋ณต ์ซ์ ์ ๊ฑฐํ ๋ค, ์ซ์ ์ํํ๋ฉด์ ์ฐ์ ์ซ์์ ์์ ์ง์ ์ธ์ง ์ฒดํฌ
5
+ * - ๋ ์์ ์ซ์๊ฐ ์์ผ๋ฉด ํ์ฌ ์ซ์๊ฐ ์ฐ์ ์ซ์์ ์์ ์ง์ ์ด๊ธฐ ๋๋ฌธ์, ์ฐ์๋ ๋ค์ ํฐ ์ซ์๊ฐ ์กด์ฌํ๋์ง ์ฒดํฌ
6
+ * - ์์ผ๋ฉด count ์ฆ๊ฐ์ํค๊ณ , ๊ทธ ๋ค์ ์ซ์ ์๋์ง ๋ฐ๋ณตํด์ ์ฒดํฌ
7
+ * - ์ฐ์ ์ซ์๊ฐ ์กด์ฌํ์ง ์์ ๋๊น์ง ์ํํ๊ธฐ
8
+ * - count๊ฐ maxCount๋ณด๋ค ํฐ ๊ฒฝ์ฐ maxCount๊ฐ์ count ๊ฐ์ผ๋ก ์
๋ฐ์ดํธ
9
+ *
10
+ * ์๊ฐ๋ณต์ก๋ :
11
+ * - ์ซ์ ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ๋ชจ๋ ์ํํ๋๊น O(n)
12
+ *
13
+ * ๊ณต๊ฐ๋ณต์ก๋ :
14
+ * - Set์ ์ฌ์ฉํด์ ์ซ์ ์ค๋ณต ์ ๊ฑฐํ๊ณ ์ ์ฅํ๋๊น O(n)
15
+ */
16
+
17
+ /**
18
+ * @param {number[] } nums
19
+ * @return {number }
20
+ */
21
+ var longestConsecutive = function ( nums ) {
22
+ // ๋ฐฐ์ด ๋น์ด์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ
23
+ if ( nums . length === 0 ) return 0 ;
24
+
25
+ const uniqueNums = new Set ( nums ) ;
26
+ let maxCount = 1 ;
27
+
28
+ for ( const num of uniqueNums ) {
29
+ // ์ฐ์๋ ์ซ์์ ์์ ์ง์ ์ธ์ง ์ฒดํฌ(๋ ์์ ์ซ์๊ฐ ์กด์ฌํ์ง ์์์ผ ํจ)
30
+ if ( ! uniqueNums . has ( num - 1 ) ) {
31
+ let next = num + 1 ;
32
+ let count = 1 ;
33
+
34
+ // ์ฐ์ ์ซ์๊ฐ ๋ ์กด์ฌํ๋์ง ์ฒดํฌ
35
+ while ( uniqueNums . has ( next ) ) {
36
+ next ++ ;
37
+ count ++ ;
38
+ }
39
+
40
+ // ๊ธฐ์กด maxCount๋ณด๋ค ํฌ๋ฉด, count ๊ฐ์ผ๋ก ์
๋ฐ์ดํธํ๊ธฐ
41
+ if ( maxCount < count ) maxCount = count ;
42
+ }
43
+ }
44
+
45
+ return maxCount ;
46
+ } ;
You canโt perform that action at this time.
0 commit comments