Skip to content

Conversation

@JooKangsan
Copy link
Contributor

📌 푼 문제

문제이름 문제링크
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
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 (!subRoot) return true;
  if (!root) return false;
  
  const isSameTree = (tree1, tree2) => {
      if (!tree1 && !tree2) return true;
      if (!tree1 || !tree2) return false;
      if (tree1.val !== tree2.val) return false;
      return isSameTree(tree1.left, tree2.left) && 
             isSameTree(tree1.right, tree2.right);
  };
  
  return isSameTree(root, subRoot) || 
         isSubtree(root.left, subRoot) || 
         isSubtree(root.right, subRoot);
};

213. House Robber II

기존에 풀었던 House Robber 로직을 사용해서 풀었습니다.

var rob = function (nums) {
  let n = nums.length;
  if (n === 0) return 0;
  if (n === 1) return nums[0];
  if (n === 2) return Math.max(nums[0], nums[1]);

  let firstCase = [...nums];
  firstCase.pop();
  let first = robHelper(firstCase);

  let secondCase = [...nums];
  secondCase.shift();
  let second = robHelper(secondCase);

  return Math.max(first, second);
};

function robHelper(houses) {
  let n = houses.length;
  let dp = new Array(n).fill(0);
  dp[0] = houses[0];
  dp[1] = Math.max(houses[0], houses[1]);

  for (let i = 2; i < n; i++) {
    dp[i] = Math.max(dp[i - 1], dp[i - 2] + houses[i]);
  }
  return dp[n - 1];
}

207. Course Schedule

여기는 아직 문재의 해결 방법을 이해하고 풀지를 못해서 풀지못했습니다...ㅠ 다음 주에 작성해서 올리겠습니다

150. Evaluate Reverse Polish Notation

include 를 통해서 연산자를 찾고 연산자의 앞두개를 연산자로 처리한뒤 다시 그자리에 넣어줬습니다.

var evalRPN = function (tokens) {
  while (tokens.length > 1) {
    for (let i = 0; i < tokens.length; i++) {
      if (["+", "-", "*", "/"].includes(tokens[i])) {
        const num1 = Number(tokens[i - 2]);
        const num2 = Number(tokens[i - 1]);
        const operator = tokens[i];
        let result;

        switch (operator) {
          case "+":
            result = num1 + num2;
            break;
          case "-":
            result = num1 - num2;
            break;
          case "*":
            result = num1 * num2;
            break;
          case "/":
            result =
              num1 / num2 > 0
                ? Math.floor(num1 / num2)
                : Math.ceil(num1 / num2);
            break;
        }

        tokens.splice(i - 2, 3, result.toString());
        break;
      }
    }
  }
  return Number(tokens[0]);
};

@oris8 oris8 requested review from Berrnuda and qlghwp123 November 25, 2024 16:27
@oris8 oris8 merged commit df4965d into master Nov 26, 2024
3 checks passed
@JooKangsan JooKangsan changed the title Joo kangsan [Joo kangsan] 24.11.19 Nov 30, 2024
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