문제 링크https://leetcode.com/problems/subtree-of-another-tree/문제 설명주어진 두 개의 이진 트리 root와 subRoot가 있을 때, root 트리의 어떤 서브트리가 subRoot와 동일한 구조와 값을 가지고 있는지를 확인하는 함수를 작성하세요. 서브트리는 트리의 어떤 노드와 그 노드의 모든 자손으로 구성된 트리를 의미합니다. 주어진 트리 root가 자신을 서브트리로 간주할 수도 있습니다.예제예제 1입력: root = [3,4,5,1,2], subRoot = [4,1,2]출력: true설명: root 트리에서 4를 루트로 하는 서브트리는 subRoot와 동일한 구조와 값을 가집니다.예제 2입력: root = [3,4,5,1,2,null,null,null,nul..
문제 링크https://leetcode.com/problems/invert-binary-tree/문제 설명이진 트리의 루트가 주어질 때, 이 트리를 뒤집고 그 루트를 반환하는 함수를 작성하세요. 이진 트리를 뒤집는다는 것은 각 노드의 왼쪽 자식과 오른쪽 자식을 교환하는 것을 의미합니다.예제예제 1입력: root = [4,2,7,1,3,6,9]출력: [4,7,2,9,6,3,1]설명: 주어진 트리는 다음과 같은 구조입니다. 4 / \ 2 7 / \ / \ 1 3 6 9이 트리를 뒤집으면 다음과 같습니다. 4 / \ 7 2 / \ / \ 9 6 3 1예제 2입력: root = [2,1,3]출력: [2,3,1..
문제 링크https://leetcode.com/problems/same-tree/문제 설명두 개의 이진 트리 p와 q의 루트가 주어질 때, 이 두 트리가 동일한 구조와 값을 가지는지를 확인하는 함수를 작성하세요. 두 이진 트리는 다음과 같은 조건을 만족할 때 동일하다고 간주됩니다:두 트리의 구조가 동일해야 합니다. (즉, 각 노드가 자식을 가지고 있는 방식이 같아야 함)각 노드의 값이 동일해야 합니다.예제예제 1입력: p = [1,2,3], q = [1,2,3]출력: true설명: 두 트리는 동일한 구조와 값을 가집니다.예제 2입력: p = [1,2], q = [1,null,2]출력: false설명: p 트리는 두 자식을 가진 노드가 있지만, q 트리는 하나의 자식만 가집니다.예제 3입력: p = [1,..
문제 링크https://leetcode.com/problems/maximum-depth-of-binary-tree/문제 설명이진 트리의 루트 노드가 주어질 때, 이 트리의 최대 깊이를 반환하는 함수를 작성하세요. 이진 트리의 최대 깊이는 루트 노드에서 가장 먼 잎 노드까지의 경로에 있는 노드의 수를 의미합니다.예제예제 1입력: root = [3,9,20,null,null,15,7]출력: 3설명: 트리의 구조는 다음과 같습니다. 3 / \ 9 20 / \ 15 7최대 깊이는 3입니다 (3 → 20 → 15 또는 3 → 20 → 7).예제 2입력: root = [1,null,2]출력: 2설명: 트리의 구조는 다음과 같습니다. 1 \ ..
문제 링크https://leetcode.com/problems/valid-palindrome/문제 설명주어진 문자열이 팰린드롬인지 확인대소문자를 구별하지 않음영문자와 숫자만을 대상으로 한다.Example 1:Input: s = "A man, a plan, a canal: Panama"Output: trueExplanation: "amanaplanacanalpanama" is a palindrome.Example 2:Input: s = "race a car"Output: falseExplanation: "raceacar" is not a palindrome.풀이 전략리스트로 변환데크 자료형을 이용한 최적화슬라이싱 사용이걸로 구현하는 것이 속도가 제발 빠름class Solution: def isPali..
문제 링크https://leetcode.com/problems/valid-parentheses/문제 설명문자 '()', '()', '{), '}', '[]' 및 '[]'만 포함된 문자열이 주어지면 입력 문자열이 유효한지 확인합니다.Example 2: Input: s = "()[]{}" Output: trueExample 3: Input: s = "(]" Output: false풀이 전략유효한 문자열에는 균형 잡힌 괄호가 올바르게 정렬되어 있어야 합니다.스택을 사용하면 "마지막에, 먼저"(LIFO) 원칙에 따라 각 마감 브래킷을 가장 최근에 일치하지 않는 오프닝 브래킷과 일치시킬 수 있습니다.class Solution: def isValid(self, s: str) -> bool: ..