Skip to content

Commit 5f6bc76

Browse files
committed
week2 1 attempt
1 parent 35d3081 commit 5f6bc76

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}

0 commit comments

Comments
ย (0)