Skip to content

Commit d027001

Browse files
authored
Merge pull request #399 from JEONGHWANMIN/main
[ํ™˜๋ฏธ๋‹ˆ๋‹ˆ] Week3 ๋ฌธ์ œํ’€์ด
2 parents 1265a74 + 5d93b0f commit d027001

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

โ€Žclimbing-stairs/hwanmini.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n)
2+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(n)
3+
4+
/**
5+
* @param {number} n
6+
* @return {number}
7+
*/
8+
var climbStairs = function(n) {
9+
const stairs = [1, 2]
10+
11+
for (let i = 2; i < n; i++) {
12+
stairs[i] = stairs[i-1] + stairs[i-2]
13+
}
14+
15+
return stairs[n-1]
16+
};
17+
18+
console.log(climbStairs(5))

โ€Žcombination-sum/hwanmini.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(c^t)
2+
// ๊ณต๊ฐ„๋ณต์žก๋„: O(t)
3+
4+
/**
5+
* @param {number[]} candidates
6+
* @param {number} target
7+
* @return {number[][]}
8+
*/
9+
var combinationSum = function(candidates, target) {
10+
const result = [];
11+
12+
const dfs = (startIdx, subset = [], sum = 0) => {
13+
if (sum > target) return;
14+
if (sum === target) {
15+
result.push([...subset]);
16+
return;
17+
}
18+
19+
20+
for (let i = startIdx; i < candidates.length; i++) {
21+
subset.push(candidates[i]);
22+
dfs(i, subset, sum + candidates[i]);
23+
subset.pop();
24+
}
25+
};
26+
27+
dfs(0);
28+
29+
return result;
30+
};
31+
32+
console.log(combinationSum([2, 3, 6, 7], 7));

โ€Žtwo-sum/hwanmini.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n log n)
2+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(n)
3+
4+
/**
5+
* @param {number[]} nums
6+
* @param {number} target
7+
* @return {number[]}
8+
*/
9+
var twoSum = function(nums, target) {
10+
11+
12+
const numsArr = nums.map((num,idx) => [num,idx])
13+
numsArr.sort((a,b) => a[0] - b[0])
14+
15+
16+
let leftIdx = 0;
17+
let rightIdx = nums.length - 1;
18+
19+
while (leftIdx <= rightIdx) {
20+
if (numsArr[leftIdx][0] + numsArr[rightIdx][0] === target) {
21+
return [numsArr[leftIdx][1], numsArr[rightIdx][1]]
22+
}
23+
24+
if (numsArr[rightIdx][0] + numsArr[leftIdx][0] > target) {
25+
rightIdx--
26+
} else {
27+
leftIdx++
28+
}
29+
}
30+
return []
31+
};
32+
33+
34+
const nums = [2,7,11,15]
35+
const target = 9
36+
37+
console.log(twoSum(nums,target))
38+
console.log(twoSum([3,2,4],6))
39+
console.log(twoSum([3,3],6))

0 commit comments

Comments
ย (0)