Skip to content

Commit

Permalink
Merge pull request #579 from Sunjae95/main
Browse files Browse the repository at this point in the history
[์„ ์žฌ] Week13
  • Loading branch information
SamTheKorean authored Nov 10, 2024
2 parents 5ca8ce3 + c014422 commit e4ac6b1
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
22 changes: 22 additions & 0 deletions house-robber/sunjae95.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* @description
* ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์–‘์˜ ๋ˆ์ด๋ผ๋Š” ๋ฌธ๊ตฌ์—์„œ dynamic programming์„ ์—ฐ์ƒ
* ์—ฐ์†๋œ ์ง‘์€ ํ„ธ ์ˆ˜ ์—†๋‹ค๋ผ๋Š” ๋ฌธ๊ตฌ์—์„œ ์ ํ™”์‹์„ ๋„์ถœ ํ•  ์ˆ˜ ์žˆ์—ˆ์Œ
*
* n = length of nums
* time complexity: O(n)
* space complexity: O(n)
*/
var rob = function (nums) {
if (nums.length === 1) return nums[0];

const dp = Array(nums.length).fill(0);

dp[0] = nums[0];
dp[1] = Math.max(nums[1], dp[0]);

for (let i = 2; i < nums.length; i++)
dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);

return dp[nums.length - 1];
};
31 changes: 31 additions & 0 deletions lowest-common-ancestor-of-a-binary-search-tree/sunjae95.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* @description
* bfs, dfs์™€ ๊ฐ™์€ ์ˆœํšŒ ๋ฐฉ๋ฒ•๊ณผ treeNode ๊ตฌ์กฐ์— child๊ฐ€ ์•„๋‹Œ parent๋ผ๋Š” ์†์„ฑ์„ ๋ถ€์—ฌํ•ด ๋ถ€๋ชจ์ฐพ๊ธฐ๋ฅผ ์•„์ด๋””์–ด๋กœ ์ ‘๊ทผ
* ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•ด์•ผํ•˜๊ณ  p์™€ q๊ฐ€ ์†ํ•œ์ง€์ ๊ณผ ๋‘˜์ด ํฌํ•จํ•˜๋Š” ๊ด€๊ณ„์ธ์ง€๋ฅผ ์ค‘์ ์œผ๋กœ ๋ฌธ์ œ์— ์ ‘๊ทผํ•จ
* ๊ทธ ๊ฒฐ๊ณผ postOrder๋ฅผ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์–ด ๋ฌธ์ œ ํ’€์ด
*
* n = length of total treeNode
* time complexity: O(n)
* space complexity: O(n)
*/
var lowestCommonAncestor = function (root, p, q) {
let answer = null;

const postOrder = (tree) => {
if (tree === null) return [false, false];

const [hasLeftP, hasLeftQ] = postOrder(tree.left);
const [hasRightP, hasRightQ] = postOrder(tree.right);

const hasP = hasLeftP || hasRightP || tree.val === p.val;
const hasQ = hasLeftQ || hasRightQ || tree.val === q.val;

if (hasP && hasQ && answer === null) answer = tree;

return [hasP, hasQ];
};

postOrder(root);

return answer;
};
32 changes: 32 additions & 0 deletions non-overlapping-intervals/sunjae95.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* @description
* overlapping์ด ์•ˆ๋˜๊ธฐ์œ„ํ•œ ๊ธฐ์ค€์ด ํ•„์š”ํ•จ์„ ๋Š๋‚Œ
* ์ฒ˜์Œ์—๋Š” ์‹œ์ž‘์ , ๋์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ–ˆ์ง€๋งŒ 16๋ฒˆ ํ…Œ์ŠคํŠธ์—์„œ ์‹คํŒจ
* ์ •๋ ฌ๊ธฐ์ค€์ด ๋์ , ์‹œ์ž‘์  ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผํ•œ๋‹ค๊ณ  ๊นจ๋‹ซ๊ฒŒ ๋จ
*
* n = length of intervals
* time complexity: O(n log n)
* space complexity: O(n)
*/
var eraseOverlapIntervals = function (intervals) {
intervals.sort((a, b) => {
if (a[1] !== b[1]) return a[1] - b[1];
if (a[0] !== b[0]) return b[0] - a[0];
return 0;
});

let answer = 0;
const current = intervals[0];

for (let i = 1; i < intervals.length; i++) {
const [start, end] = intervals[i];

if (current[1] > start) answer++;
else {
current[0] = start;
current[1] = end;
}
}

return answer;
};

0 comments on commit e4ac6b1

Please sign in to comment.