File tree Expand file tree Collapse file tree 3 files changed +117
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 3 files changed +117
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ 4์ 5๋ฅผ ๊ฐ๊ฐ ๊ตฌํ๋ฉด
3+
4+ 1+1+1+1
5+ 1+1+2
6+ 1+2+1
7+ 2+1+1
8+ 2+2
9+ => 5
10+
11+ 1+1+1+1+1
12+ 1+1+1+2
13+ 1+1+2+1
14+ 1+2+1+1
15+ 2+1+1+1
16+ 1+2+2
17+ 2+1+2
18+ 2+2+1
19+ => 8
20+
21+ ์ ํผ๋ณด๋์น ์์ด ๊ฐ์๊น? ์ผ๋จ ๊ทธ๋ ๊ฒ ๊ฐ์ ๊ณ์ฐํด๋ณด์.
22+
23+ ์๊ฐ ๋ณต์ก๋: O(n)
24+ ๊ณต๊ฐ ๋ณต์ก๋: O(n)
25+
26+ ๊ทผ๋ฐ ์ ํผ๋ณด๋์น์ธ์ง๋ ์๊ฐํด๋ณด๊ณ ์
๋ฐ์ดํธ ํ๊ธฐ..
27+ */
28+
29+ function climbStairs ( n : number ) : number {
30+ if ( n === 1 ) {
31+ return 1 ;
32+ }
33+
34+ if ( n === 2 ) {
35+ return 2 ;
36+ }
37+
38+ const results = [ 1 , 2 ] ;
39+ for ( let i = 2 ; i < n ; i ++ ) {
40+ results . push ( results [ i - 2 ] + results [ i - 1 ] ) ;
41+ }
42+
43+ return results . pop ( ) as number ;
44+ }
Original file line number Diff line number Diff line change 1+ /**
2+ [์ฒซ๋ฒ์งธ ์๋]
3+ O(n)์ ์๊ฐ ๋ณต์ก๋๋ก, i ๋ฒ์งธ ์๋ฅผ ์ ์ธํ ์ ๊ณฑ ์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์
4+ nums ๋ฅผ ์ข์ฐ์์ ์ํํ๋ฉฐ, result += nums[i]^2 or nums[n-i]^2 ๋ฅผ ์ด์ด ๋๊ฐ๋,
5+ ๋ ๋ฐฐ์ด์ ๋ํ๋ ์์ ์์ nums ์ ๋ฐฐ์ด ๊ฐ์ ๋บด์ฃผ๋ฉด?
6+
7+ ... ๋ฌธ์ ๋ฅผ ์๋ชป ์ดํดํด์ ํฉ์ธ ์ค ์์๋ค.. ๊ณฑ์ด๊ตฌ๋ ๋๋์
์์ด ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ๋ด
8+
9+ ์ผ๋จ nums ์ 0์ด ๋๊ฐ ์์ผ๋ฉด ์ ๋ต ๋ฐฐ์ด์ ๋ชจ๋ ์๋ 0์ด๋ค.
10+ ๊ทธ ์ธ์๋ ๊ณฑ์
์ ์ ์งํด์ผ ํ๋๋ฐ..
11+
12+ ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์, ์ ์ฒด ์ ๊ณฑ ํ๋ ฌ์ ๋ง๋ค์ด ๋ณด์ => ์คํจ
13+
14+ ์์์ผ๋ก ๋ํ๋ด๋ณด๋ฉด?
15+
16+ f(n) = n๋ฒ์งธ ์ ์ ์ธ ์ ์ฒด ๊ณฑ
17+ f(0) = f(1) * ... * f(n)
18+ f(1) = f(0) * f(2) * ... * f(n)
19+ f(n-1) = f(0) * ... * f(n-2) * f(n)
20+
21+ ๋ชจ๋ฅด๊ฒ ๋ค.. ์ค๋์ ํด์ค ๋ณด๊ณ ๋ด์ผ ๊ธฐ์ตํด์ ํ์ด๋ณด์
22+ */
23+ function productExceptSelf ( nums : number [ ] ) : number [ ] {
24+ const forward = [ nums [ 0 ] ] ;
25+ const backward = [ nums [ nums . length - 1 ] ] ;
26+
27+ for ( let i = 1 ; i < nums . length ; i ++ ) {
28+ forward . push ( forward [ i - 1 ] * nums [ i ] ) ;
29+ backward . push ( backward [ i - 1 ] * nums [ nums . length - 1 - i ] ) ;
30+ }
31+
32+ const result = [ ] ;
33+ for ( let i = 0 ; i < nums . length - 1 ; i ++ ) {
34+ result . push ( forward [ i ] * backward [ i ] ) ;
35+ }
36+
37+ return result ;
38+ }
Original file line number Diff line number Diff line change 1+ /**
2+ ๊ฐ ๋ฌธ์์ด์ ์ํํ๋ฉฐ, ๊ธ์๋ณ๋ก ๋ฑ์ฅํ ํ์๋ฅผ ๋น๊ตํ ์ ์์ ๋ฏ ํ๋ค.
3+ s ๋ฅผ ๋จผ์ ์ํํ์ฌ ์์ฑํ map ์ ๋ํด t ๋ฅผ ์ํํ๋ฉฐ map ์ ์๊ฑฐ์์ผ๋ณด์
4+
5+ ์๊ฐ ๋ณต์ก๋: O(n)
6+ ๊ณต๊ฐ ๋ณต์ก๋: O(log n) (๋ฌธ์์ด ์๋ฅผ ๊ธฐ์ค)
7+ */
8+
9+ function isAnagram ( s : string , t : string ) : boolean {
10+ const wordMap = new Map < string , number > ( ) ;
11+ for ( let i = 0 ; i < s . length ; i ++ ) {
12+ const value = wordMap . get ( s [ i ] )
13+ if ( value ) {
14+ wordMap . set ( s [ i ] , value + 1 ) ;
15+ } else {
16+ wordMap . set ( s [ i ] , 1 ) ;
17+ }
18+ }
19+
20+ for ( let i = 0 ; i < t . length ; i ++ ) {
21+ const remainWord = wordMap . get ( t [ i ] ) ;
22+ if ( remainWord ) {
23+
24+ if ( remainWord > 1 ) {
25+ wordMap . set ( t [ i ] , remainWord - 1 ) ;
26+ } else if ( remainWord === 1 ) {
27+ wordMap . delete ( t [ i ] ) ;
28+ }
29+ } else {
30+ return false ;
31+ }
32+ }
33+
34+ return wordMap . size === 0 ? true : false ;
35+ }
You canโt perform that action at this time.
0 commit comments