Skip to content

Conversation

@oris8
Copy link
Member

@oris8 oris8 commented Nov 26, 2024

๐Ÿ“Œ ํ‘ผ ๋ฌธ์ œ

๋ฌธ์ œ์ด๋ฆ„ ๋ฌธ์ œ๋งํฌ
Binary Tree Level Order Traversal https://leetcode.com/problems/binary-tree-level-order-traversal
Subtree Of Another Tree https://leetcode.com/problems/subtree-of-another-tree
House Robber II https://leetcode.com/problems/house-robber-ii
Course Schedule https://leetcode.com/problems/course-schedule
Evaluate Reverse Polish Notation https://leetcode.com/problems/evaluate-reverse-polish-notation

๐Ÿ“ ๊ฐ„๋‹จํ•œ ํ’€์ด ๊ณผ์ •

102. Binary Tree Level Order Traversal

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ ‘๊ทผ๋ฒ•/ํ’€์ด ์„ค๋ช…
var levelOrder = function (root) {
  if (!root) return [];

  const result = [];
  const queue = [root];

  while (queue.length > 0) {
    const levelSize = queue.length;
    const currentLevel = [];

    for (let i = 0; i < levelSize; i++) {
      const node = queue.shift();
      currentLevel.push(node.val);

      if (node.left) queue.push(node.left);
      if (node.right) queue.push(node.right);
    }

    result.push(currentLevel);
  }

  return result;
};

572. Subtree of Another Tree

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ ‘๊ทผ๋ฒ•/ํ’€์ด ์„ค๋ช…
var isSubtree = function (root, subRoot) {
  if (!root) return false;

  if (isSameTree(root, subRoot)) return true;

  return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
};

var isSameTree = function (t1, t2) {
  if (!t1 && !t2) return true;
  if (!t1 || !t2 || t1.val !== t2.val) return false;

  return isSameTree(t1.left, t2.left) && isSameTree(t1.right, t2.right);
};

213. House Robber II

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ ‘๊ทผ๋ฒ•/ํ’€์ด ์„ค๋ช…

๋ฐฐ์—ด๋กœ ์ €์žฅํ•ด๋†“๋Š”๊ฒŒ ํŽธํ•ด์„œ ๋งค๋ฒˆ ๊ทธ๋ ‡๊ฒŒ ํ‘ธ๋Š”๋ฐ ์•„๋ฌด๋ž˜๋„ ๊ณต๊ฐ„๋ณต์žก๋„๋ฉด์—์„œ ๋ณ„๋กœ๋ผ prev ๊ฐ’ ์ด์šฉํ•˜๋Š”๊ฑฐ์— ์ต์ˆ™ํ•ด์ ธ๋ณด๋Š”๊ฑธ๋กœ..

var rob = function (nums) {
  // T(n) = Math.max(T(n-1), T(n-2) + n)
  if (nums.length <= 2) return Math.max(nums[0], nums?.[1] || 0);

  const results = [nums[0], Math.max(nums[0], nums[1])];
  const not1results = [0, nums[1]];
  for (let i = 2; i < nums.length; i++) {
    results[i] = Math.max(results[i - 1], results[i - 2] + nums[i]);
    not1results[i] = Math.max(not1results[i - 1], not1results[i - 2] + nums[i]);
  }

  return Math.max(results[nums.length - 2], not1results[nums.length - 1]);
};

207. Course Schedule

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ ‘๊ทผ๋ฒ•/ํ’€์ด ์„ค๋ช…

์ด๊ฑฐ ๊ณ„์† linkedList๋กœ ์ ‘๊ทผํ•˜๋ ค๋‹ค๊ฐ€ ๋„ˆ๋ฌด ์•ˆํ’€๋ ค์„œ ํ’€์ด๋ณด๊ณ  ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค
numCourses๋ฅผ ์ž˜๋ชป์ดํ•ดํ•ด์„œ ๋ชปํ’€์—ˆ๋˜๊ฑฐ๊ฐ™์•„์š” ๐Ÿฅน
map์„ ์ด์šฉํ•ด์„œ ๊ทธ๋ž˜ํ”„ ๋งŒ๋“ค์–ด์ฃผ๊ณ ,
visited, completed ํ†ตํ•ด์„œ ์‚ฌ์ดํด ํ™•์ธํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค

var canFinish = function (numCourses, prerequisites) {
  const graph = new Map();

  // ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
  for (let i = 0; i < numCourses; i++) {
    graph.set(i, []);
  }

  for (const [course, prereq] of prerequisites) {
    graph.get(prereq).push(course);
  }

  // ๋ฐฉ๋ฌธ ์ƒํƒœ ๊ด€๋ฆฌ
  const visited = new Set(); // ํ˜„์žฌ DFS ๋ฐฉ๋ฌธ ์ค‘์ธ ๋…ธ๋“œ
  const completed = new Set(); // ์ด๋ฏธ ์ฒ˜๋ฆฌ ์™„๋ฃŒ๋œ ๋…ธ๋“œ

  // ์‚ฌ์ดํด ํƒ์ง€ ํ•จ์ˆ˜
  const dfs = (course) => {
    if (visited.has(course)) return false; // ์‚ฌ์ดํด ๋ฐœ๊ฒฌ
    if (completed.has(course)) return true; // ์ด๋ฏธ ํ™•์ธ๋œ ๊ฒฝ์šฐ

    visited.add(course); // ํ˜„์žฌ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์ค‘
    for (const nextCourse of graph.get(course)) {
      if (!dfs(nextCourse)) return false; // ๋‹ค์Œ ์ฝ”์Šค์—์„œ ์‚ฌ์ดํด ๋ฐœ๊ฒฌ
    }
    visited.delete(course); // ํƒ์ƒ‰ ์™„๋ฃŒ ํ›„ ์ œ๊ฑฐ
    completed.add(course); // ์™„๋ฃŒ๋œ ๋…ธ๋“œ๋กœ ๊ธฐ๋ก

    return true;
  };

  // ๊ฐ ๊ฐ•์ขŒ์— ๋Œ€ํ•ด DFS ์‹คํ–‰
  for (let i = 0; i < numCourses; i++) {
    if (!dfs(i)) return false; // ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋ฉด false ๋ฐ˜ํ™˜
  }

  return true; // ๋ชจ๋“  ๊ฐ•์ขŒ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Œ
};

150. Evaluate Reverse Polish Notation

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ ‘๊ทผ๋ฒ•/ํ’€์ด ์„ค๋ช…
    ์˜ค๋ž˜๊ฑธ๋ ธ์ง€๋งŒ ํ’€๊ณ ๋‚˜๋‹ˆ๊นŒ ๊น”๋”ํ•˜๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋ผ ๊ธฐ๋ถ„์ด ์ข‹์•˜์–ด์š”.. ..
var evalRPN = function (tokens) {
  const operators = {
    "+": (a, b) => a + b,
    "-": (a, b) => a - b,
    "*": (a, b) => a * b,
    "/": (a, b) => Math.trunc(a / b),
  };

  const stack = [];

  for (const token of tokens) {
    if (operators?.[token]) {
      const b = stack.pop();
      const a = stack.pop();
      stack.push(operators[token](a, b));
    } else {
      stack.push(+token);
    }
  }

  return stack.pop();
};

๐Ÿ™Œ ๊ถ๊ธˆํ•œ ์ 

  • ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์„ ๊ฒฝ์šฐ ์ ์–ด์ฃผ์‹œ๊ณ  ์—†์„ ๊ฒฝ์šฐ ์ง€์›Œ์ฃผ์„ธ์š”.

oris8 added 24 commits November 5, 2024 19:21
- ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ ๋ถ„๋ฆฌ
- ์‹œ๊ฐ„๋ณต์žก๋„ 11.88% -> 27.22%
@oris8 oris8 self-assigned this Nov 26, 2024
Copy link
Contributor

@oh-chaeyeon oh-chaeyeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ „์ฒด์ ์œผ๋กœ ์ง๊ด€์ ์ธ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด์„œ ์ดํ•ดํ•˜๊ธฐ ํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ ‘๊ทผ์„ ํ•œ ํ’€์ด๋„ ์žˆ์ง€๋งŒ, ๋‹ค๋ฅด๊ฒŒ ํ’€์–ด๋‚˜๊ฐ„ ํ’€์ด๋„ ์žˆ์–ด์„œ ์ฝ”๋“œ๋ฆฌ๋ทฐํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค~ ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค๐Ÿ˜Š

@oris8 oris8 merged commit e8c1eaf into master Dec 2, 2024
3 checks passed
JooKangsan pushed a commit that referenced this pull request Dec 3, 2024
* 102 / Binary Tree Level Order Traversal / Medium / 12m 8s

* 572 / Subtree of Another Tree / Easy / 23m 12s

* 213 / House Robber II / Medium / 13m 27s

* 207 / Course Schedule / Medium / -

* 150 / Evaluate Reverse Polish Notation / Medium / 36m 44s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants