File tree 5 files changed +119
-0
lines changed
longest-consecutive-sequence
5 files changed +119
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {boolean }
4
+ *
5
+ * ์ ๊ทผ: ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ํตํด ์ค๋ณต์ด ์์ผ๋ฉด true ๋ฐํ, ์ค๋ณต์ด ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋๋ก ์ค๊ณํ์์ต๋๋ค.
6
+ * ๊ทธ๋ฌ๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋ ๋ฒ ๋๊ธฐ ๋๋ฌธ์ ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ค๊ณํ๊ณ ์ ํ์์ต๋๋ค.
7
+ *
8
+ * ํด๊ฒฐ: ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ณต ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ Set์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
9
+ * Set์ ํด๋น ์์๊ฐ ์๋ ์ง ํ์ธํ๊ณ ์๋ค๋ฉด true๋ฅผ ์๋ค๋ฉด false๋ฅผ ๋ฐํํ๋๋ก ํ์์ต๋๋ค.
10
+ */
11
+
12
+ var containsDuplicate = function ( nums ) {
13
+ const duplicate = new Set ( ) ;
14
+
15
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
16
+ if ( duplicate . has ( nums [ i ] ) ) {
17
+ return true ;
18
+ }
19
+ duplicate . add ( nums [ i ] ) ;
20
+ }
21
+
22
+ return false ;
23
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+
6
+ var rob = function ( nums ) {
7
+ // ์ง์ด ํ๋์ธ ๊ฒฝ์ฐ
8
+ if ( nums . length === 1 ) return nums [ 0 ]
9
+
10
+ let prevMax = 0 // ๋ ์ง ์ ๊น์ง์ ์ต๋ ๊ธ์ก
11
+ let currMax = 0 // ์ด์ ์ง๊น์ง์ ์ต๋ ๊ธ์ก
12
+
13
+ for ( let num of nums ) {
14
+ let temp = currMax // ํ์ฌ ์ต๋ ๊ธ์ก
15
+ currMax = Math . max ( currMax , prevMax + num ) // ํ์ฌ ์ง์ ํธ๊ฑฐ๋ ํธ์ง ์์ ๊ฒฝ์ฐ ์ค ํฐ ๊ฐ
16
+ prevMax = temp // ์ด์ ์ง์ผ๋ก ์ด๋
17
+ }
18
+
19
+ return currMax // ์ต๋ ๊ธ์ก ๋ฐํ
20
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+
6
+ var longestConsecutive = function ( nums ) {
7
+ // Set์ผ๋ก ๋ฐฐ์ด์์ ์ค๋ณต๋ ์์ ์ ๊ฑฐ
8
+ const numSet = new Set ( nums )
9
+
10
+ // ์ต์ฅ ๊ธธ์ด
11
+ let longest = 0
12
+
13
+ // ๋ฐฐ์ด์ ๋๋ฉฐ ์ฒซ ์์์ด ๋๋ ์ซ์๋ฅผ ์ฐพ์
14
+ for ( const num of numSet ) {
15
+ // ์ฐ์๋ ์ซ์์ ์์์ num - 1์ด Set์ ์กด์ฌํ์ง ์๋ ์ซ์์ฌ์ผ ํจ
16
+ if ( ! numSet . has ( num - 1 ) ) {
17
+ let currentNum = num
18
+ let currentStreak = 1
19
+
20
+ while ( numSet . has ( currentNum + 1 ) ) {
21
+ currentNum += 1 // ๋ค์ ์ซ์๋ก ์ด๋
22
+ currentStreak += 1 // ์ฐ์๋ ๊ธธ์ด ์ฆ๊ฐ
23
+ }
24
+
25
+ longest = Math . max ( longest , currentStreak )
26
+ }
27
+ }
28
+
29
+ return longest
30
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } k
4
+ * @return {number[] }
5
+ */
6
+
7
+ function topKFrequent ( nums , k ) {
8
+ // ์ซ์์ ๋น๋๋ฅผ ์ ์ฅํ Map ์์ฑ
9
+ const frequency = new Map ( ) ;
10
+
11
+ // ๋น๋ ๊ณ์ฐ
12
+ for ( const num of nums ) {
13
+ // Map์ ์ด๋ฏธ ์ซ์๊ฐ ์์ผ๋ฉด +1, ์์ผ๋ฉด 1๋ก reset
14
+ frequency . set ( num , ( frequency . get ( num ) || 0 ) + 1 ) ;
15
+ }
16
+
17
+ // ๋น๋ ์์ผ๋ก ์ซ์ ์ ๋ ฌ ํ ๊ฐ์ฅ ๋น๋๊ฐ ๋์ k๊ฐ์ ์ซ์๋ฅผ ๋ฐํ
18
+ return [ ...frequency . entries ( ) ] // entries๋ฅผ ์ด์ฉํด Map์ ๋ฐฐ์ด๋ก ๋ณํ
19
+ . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] )
20
+ . slice ( 0 , k )
21
+ . map ( entry => entry [ 0 ] ) ;
22
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {boolean }
4
+ *
5
+ * ํด๊ฒฐ: ๋จผ์ ๋ฌธ์์ด์ ์ ๋ฐฉํฅ, ์ญ๋ฐฉํฅ ๋น๊ต๋ฅผ ์ํด ๋ฌธ์์ด์ ์๋ฌธ์๋ก ๋ณํํ์์ผ๋ฉฐ ํน์๊ธฐํธ๋ ์ ์ธํ์์ต๋๋ค.
6
+ * ์ ๋ฐฉํฅ๊ณผ ์ญ๋ฐฉํฅ์ ๋น๊ตํ์ฌ ๋ฌธ์๊ฐ ๋ชจ๋ ์ผ์นํ๋ฉด true ์๋๋ผ๋ฉด false๋ฅผ ๋ฐํํ์์ต๋๋ค.
7
+ */
8
+ var isPalindrome = function ( s ) {
9
+ const filterS = s . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 ] / g, "" ) ;
10
+
11
+ let left = 0 ;
12
+ let right = filterS . length - 1 ;
13
+
14
+ while ( left < right ) {
15
+ if ( filterS [ left ] !== filterS [ right ] ) {
16
+ return false ;
17
+ } else {
18
+ left ++ ;
19
+ right -- ;
20
+ }
21
+ }
22
+
23
+ return true ;
24
+ } ;
You canโt perform that action at this time.
0 commit comments