From f4d3a78a5cea54d7a7615f1250187852ac94f721 Mon Sep 17 00:00:00 2001 From: SEONG JUN SHIN Date: Sat, 21 Jun 2025 15:59:49 +0900 Subject: [PATCH 1/2] feat: add week 12 problems --- non-overlapping-intervals/shinsj4653.py | 15 +++++++++++++++ .../shinsj4653.py | 16 ++++++++++++++++ remove-nth-node-from-end-of-list/shinsj4653.py | 15 +++++++++++++++ same-tree/shinsj4653.py | 15 +++++++++++++++ .../shinsj4653.py | 15 +++++++++++++++ 5 files changed, 76 insertions(+) create mode 100644 non-overlapping-intervals/shinsj4653.py create mode 100644 number-of-connected-components-in-an-undirected-graph/shinsj4653.py create mode 100644 remove-nth-node-from-end-of-list/shinsj4653.py create mode 100644 same-tree/shinsj4653.py create mode 100644 serialize-and-deserialize-binary-tree/shinsj4653.py diff --git a/non-overlapping-intervals/shinsj4653.py b/non-overlapping-intervals/shinsj4653.py new file mode 100644 index 000000000..f2dd9f373 --- /dev/null +++ b/non-overlapping-intervals/shinsj4653.py @@ -0,0 +1,15 @@ +""" +[문제풀이] +# Inputs + +# Outputs + +# Constraints + +# Ideas + +[회고] + +""" + + diff --git a/number-of-connected-components-in-an-undirected-graph/shinsj4653.py b/number-of-connected-components-in-an-undirected-graph/shinsj4653.py new file mode 100644 index 000000000..53d2007dc --- /dev/null +++ b/number-of-connected-components-in-an-undirected-graph/shinsj4653.py @@ -0,0 +1,16 @@ +""" +[문제풀이] +# Inputs + +# Outputs + +# Constraints + +# Ideas + +[회고] + +""" + + + diff --git a/remove-nth-node-from-end-of-list/shinsj4653.py b/remove-nth-node-from-end-of-list/shinsj4653.py new file mode 100644 index 000000000..f2dd9f373 --- /dev/null +++ b/remove-nth-node-from-end-of-list/shinsj4653.py @@ -0,0 +1,15 @@ +""" +[문제풀이] +# Inputs + +# Outputs + +# Constraints + +# Ideas + +[회고] + +""" + + diff --git a/same-tree/shinsj4653.py b/same-tree/shinsj4653.py new file mode 100644 index 000000000..f2dd9f373 --- /dev/null +++ b/same-tree/shinsj4653.py @@ -0,0 +1,15 @@ +""" +[문제풀이] +# Inputs + +# Outputs + +# Constraints + +# Ideas + +[회고] + +""" + + diff --git a/serialize-and-deserialize-binary-tree/shinsj4653.py b/serialize-and-deserialize-binary-tree/shinsj4653.py new file mode 100644 index 000000000..f2dd9f373 --- /dev/null +++ b/serialize-and-deserialize-binary-tree/shinsj4653.py @@ -0,0 +1,15 @@ +""" +[문제풀이] +# Inputs + +# Outputs + +# Constraints + +# Ideas + +[회고] + +""" + + From 69af9ce8e07edccd0b9738278fc8f5ee584b3931 Mon Sep 17 00:00:00 2001 From: SEONG JUN SHIN Date: Sat, 21 Jun 2025 16:40:38 +0900 Subject: [PATCH 2/2] feat: add same-tree solution --- same-tree/shinsj4653.py | 50 +++++++++++++++++++ .../shinsj4653.py | 1 + 2 files changed, 51 insertions(+) diff --git a/same-tree/shinsj4653.py b/same-tree/shinsj4653.py index f2dd9f373..e248bff1d 100644 --- a/same-tree/shinsj4653.py +++ b/same-tree/shinsj4653.py @@ -1,15 +1,65 @@ """ [문제풀이] # Inputs +두 이진 트리의 노드 배열들 p, q # Outputs +두 트리가 같은지 다른지 체크 # Constraints +- The number of nodes in both trees is in the range [0, 100]. +- -104 <= Node.val <= 104 # Ideas +둘 다 bfs?? 때리면 될 것 같은데? +동시에 탐색하면서 다른 노드 나오면 바로 종료 [회고] +풀긴 풀었는데 좀 더 깔금한 풀이가 있을까? +-> """ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +from collections import deque + + +class Solution: + def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + def dfs(p_tree, q_tree): + print('p: ', p_tree) + print('q: ', q_tree) + + if p_tree is not None and q_tree is not None and p_tree.val == q_tree.val: + print('add left and right') + return dfs(p_tree.left, q_tree.left) and dfs(p_tree.right, q_tree.right) + + if (p_tree == q_tree == None): + return True + + if (p_tree is not None and q_tree is None) or \ + (p_tree is None and q_tree is not None) or \ + (p_tree is not None and q_tree is not None and p_tree.val != q_tree.val): + print("not same!!") + return False + + return dfs(p, q) + +# 해설 +class Solution: + def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + if p is None and q is None: + return True + if p is None or q is None or p.val != q.val: + return False + return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) + + + + diff --git a/serialize-and-deserialize-binary-tree/shinsj4653.py b/serialize-and-deserialize-binary-tree/shinsj4653.py index f2dd9f373..53d2007dc 100644 --- a/serialize-and-deserialize-binary-tree/shinsj4653.py +++ b/serialize-and-deserialize-binary-tree/shinsj4653.py @@ -13,3 +13,4 @@ """ +