Skip to content

Commit c469285

Browse files
authored
Merge pull request #1144 from mmyeon/main
[mmyeon] Week 1
2 parents 1b178f4 + 4da73d7 commit c469285

File tree

9 files changed

+162
-135
lines changed

9 files changed

+162
-135
lines changed

โ€Žcontains-duplicate/mmyeon.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

โ€Žcontains-duplicate/mmyeon.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
*
3+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
4+
* - set ์ž๋ฃŒ๊ตฌ์กฐ์— nums ๊ฐ’ ๋‹ด์•„์„œ set์˜ ํฌ๊ธฐ์™€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋น„๊ตํ•˜๊ธฐ
5+
*
6+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
7+
* - nums ๋ฐฐ์—ด์„ ์ˆœํšŒํ•ด์„œ set์— ์ €์žฅํ•˜๋‹ˆ๊นŒ O(n)
8+
*
9+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
10+
* - nums ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ set์— ๋‹ด์œผ๋‹ˆ๊นŒ O(n)
11+
*/
12+
function containsDuplicate(nums: number[]): boolean {
13+
return nums.length !== new Set(nums).size;
14+
}

โ€Žhouse-robber/mmyeon.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

โ€Žhouse-robber/mmyeon.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
*
3+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
4+
* - ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ dp ์‚ฌ์šฉ
5+
* - ํ˜„์žฌ ์ธ๋ฑ์Šค๊นŒ์ง€ ํ›”์น  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์„ dp์— ์ €์žฅ
6+
*
7+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
8+
* - nums ๋ฐฐ์—ด์„ 1ํšŒ๋งŒ ์ˆœํšŒํ•˜๋‹ˆ๊นŒ O(n)
9+
*
10+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
11+
* - nums ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ dp ๋ฐฐ์—ด์— ์ €์žฅ
12+
*/
13+
function rob(nums: number[]): number {
14+
const dp: number[] = [];
15+
16+
dp[0] = nums[0];
17+
dp[1] = Math.max(nums[0], nums[1]);
18+
19+
for (let i = 2; i < nums.length; i++) {
20+
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
21+
}
22+
23+
return dp[nums.length - 1];
24+
}
25+
26+
/**
27+
*
28+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• : ๊ณต๊ฐ„ ๋ณต์žก๋„ O(1)๋กœ ์ตœ์ ํ™”
29+
* - ์ด์ „ ๋‘ ๊ฐ’๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ 
30+
*
31+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
32+
*
33+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)
34+
* - ๊ณ ์ •๋œ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
35+
*/
36+
function rob(nums: number[]): number {
37+
if (nums.length === 1) return nums[0];
38+
if (nums.length === 2) return Math.max(nums[0], nums[1]);
39+
40+
let prev2 = nums[0];
41+
let prev1 = Math.max(nums[0], nums[1]);
42+
43+
for (let i = 2; i < nums.length; i++) {
44+
const current = Math.max(prev1, prev2 + nums[i]);
45+
prev2 = prev1;
46+
prev1 = current;
47+
}
48+
49+
return prev1;
50+
}

โ€Žlongest-common-subsequence/mmyeon.js

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
*
3+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
4+
* - ์ค‘๋ณต ์ˆซ์ž ์ œ๊ฑฐํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ Set ์‚ฌ์šฉ
5+
* - ์—ฐ์†๋œ ์ˆซ์ž์˜ ์‹œ์ž‘์ (ํ˜„์žฌ ์ˆซ์ž๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ)๋ฅผ ์ฐพ์•„์„œ ์—ฐ์†๋œ ๊ธธ์ด ์นด์šดํŠธ
6+
* - ์ตœ๋Œ€ ๊ธธ์ด ๊ฐฑ์‹ 
7+
*
8+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
9+
* - Set ์ƒ์„ฑ, ์ˆซ์ž ํƒ์ƒ‰ ๋ชจ๋‘ O(n)
10+
*
11+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
12+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ, nums ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ set์— ์ €์žฅํ•˜๋‹ˆ๊นŒ O(n)
13+
*/
14+
function longestConsecutive(nums: number[]): number {
15+
const numSet = new Set(nums);
16+
let longestLength = 0;
17+
18+
for (const num of numSet) {
19+
if (!numSet.has(num - 1)) {
20+
let currentLength = 1;
21+
let currentNum = num + 1;
22+
23+
while (numSet.has(currentNum)) {
24+
currentLength++;
25+
currentNum++;
26+
}
27+
28+
longestLength = Math.max(longestLength, currentLength);
29+
}
30+
}
31+
32+
return longestLength;
33+
}

โ€Žtop-k-frequent-elements/mmyeon.js

Lines changed: 0 additions & 33 deletions
This file was deleted.

โ€Žtop-k-frequent-elements/mmyeon.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
*
3+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
4+
* - ์ •๋ ฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  o(n)์„ ํ’€๊ธฐ ์œ„ํ•ด์„œ ์ˆซ์ž ๋นˆ๋„์ˆ˜๋ฅผ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋กœ ์ €์žฅ
5+
* - ์ˆซ์ž ๋นˆ๋„์Šค๋ฅผ ๋งต์— ์ €์žฅ
6+
* - ๋งต์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ๋นˆ๋„์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅ (๋™์ผ ๋ฐ˜๋„์ˆ˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ 2์ฐจ์› ๋ฐฐ์—ด ์‚ฌ์šฉ)
7+
* - ๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๋นˆ๋„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ๊ฐ’์„ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ์ €์žฅ
8+
* - ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ k๊ฐœ๋งŒํผ ์ž˜๋ผ์„œ ๋ฆฌํ„ด
9+
*
10+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
11+
* - nums ๋ฐฐ์—ด 1ํšŒ ์ˆœํšŒํ•˜๋ฉด์„œ ๋งต์— ์ €์žฅํ•˜๋‹ˆ๊นŒ O(n)
12+
*
13+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
14+
* - nums ๋ฐฐ์—ด ๊ธธ์ด๋งŒํผ ๋งต๊ณผ 2์ฐจ์› ๋ฐฐ์—ด์— ์ •๋ฆฌํ•˜๋‹ˆ๊นŒ O(n)
15+
*/
16+
function topKFrequent(nums: number[], k: number): number[] {
17+
const numMap = new Map();
18+
19+
for (const num of nums) {
20+
numMap.set(num, (numMap.get(num) ?? 0) + 1);
21+
}
22+
23+
const storedArr: number[][] = Array(nums.length + 1)
24+
.fill(null)
25+
.map(() => []);
26+
27+
for (const [num, frequency] of numMap) {
28+
storedArr[frequency].push(num);
29+
}
30+
31+
const result: number[] = [];
32+
33+
for (let i = storedArr.length - 1; i >= 0; i--) {
34+
if (storedArr[i].length > 0) result.push(...storedArr[i]);
35+
}
36+
37+
return result.slice(0, k);
38+
}

โ€Žtwo-sum/mmyeon.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,30 @@ function twoSum(nums: number[], target: number): number[] {
2929
map.set(nums[i], i);
3030
}
3131
}
32+
33+
/**
34+
*
35+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
36+
* - ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ํ™•์ธํ•œ ์ˆซ์ž๋“ค ๋ชฉ๋ก์— ์žˆ์œผ๋ฉด ํ•ด๋‹น ์ˆซ์ž์˜ ์ธ๋ฑ์Šค์™€ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ”๋กœ ๋ฆฌํ„ด
37+
* - ์ˆซ์ž๋“ค ๋ชฉ๋ก์— ์—†์œผ๋ฉด ์ˆซ์ž์™€ ์ธ๋ฑ์Šค๋ฅผ map์— ์ €์žฅ
38+
*
39+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
40+
* - nums ๋ฐฐ์—ด์„ 1ํšŒ๋งŒ ์ˆœํšŒํ•˜๋‹ˆ๊นŒ O(n)
41+
*
42+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
43+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ, nums ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ map์— ์ €์žฅํ•˜๋‹ˆ๊นŒ O(n)
44+
*/
45+
function twoSum(nums: number[], target: number): number[] {
46+
const seenNumbers = new Map<number, number>();
47+
48+
for (let i = 0; i < nums.length; i++) {
49+
const neededValue = target - nums[i];
50+
if (seenNumbers.has(neededValue)) {
51+
return [i, seenNumbers.get(neededValue)!];
52+
}
53+
54+
seenNumbers.set(nums[i], i);
55+
}
56+
57+
return [];
58+
}

0 commit comments

Comments
ย (0)