File tree Expand file tree Collapse file tree 5 files changed +119
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 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