이직하고만다(분노)

99클럽 코테 스터디 13일차 TIL + leetcode 이분탐색

xxo_ohii 2024. 8. 3. 19:05
728x90

 

- 오늘의 학습 키워드 : 이분탐색

- search in a binary search tree

- 링크 : https://leetcode.com/problems/search-in-a-binary-search-tree/description/
공부한 내용 본인의 언어로 정리하기

# 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
class Solution:
    def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        #이진탐색트리(BST)의 특성부터 알아야할듯
        # 루트의 왼쪽은 루트보다 작다
        # 루트의 오른쪽은 루트보다 크다
        # val가 root인 서브트리를 반환하라는듯
        if root is None:
            return None
        if root.val == val:
            return root
        elif root.val < val: #오른쪽
            return self.searchBST(root.right, val)
        else: # root.val > val:
            return self.searchBST(root.left, val)


- 오늘의 회고록
오늘은 이진 탐색 트리(BST)에서 특정 값을 찾고 해당 값을 루트로 하는 서브트리를 반환하는 문제를 해결하고자 했다. 처음에 searchBST 메서드를 작성했는데, self.root와 self.val을 사용하여 메서드 내에서 올바르게 동작하지 않는 문제가 발생했다. 메서드를 호출할 때 self를 잘못 사용하거나 매개변수를 잘못 전달한 경우도 있었다. 이러한 문제로 인해 산출 값이 빈 값이 되는 등의 오류가 발생했다.

어떻게 해결했는지

문제를 해결하기 위해 다음과 같은 접근 방식을 취했다:

  1. 메서드 정의와 호출 방식 이해: 메서드를 정의할 때와 호출할 때 self와 매개변수를 올바르게 사용하는 방법을 학습했다. 인스턴스 변수를 참조할 때는 self를 사용하고, 메서드를 호출할 때는 self를 포함해야 한다는 것을 이해했다.
  2. 매개변수의 위치와 순서 이해: 매개변수의 순서가 중요하다는 것을 인식하고, 정의된 순서대로 매개변수를 전달해야 한다는 것을 배웠다.
  3. 코드 수정: searchBST 메서드를 수정하여 self.root와 self.val 대신 root와 val을 사용하고, 올바른 순서로 매개변수를 전달했다. 이를 통해 올바르게 동작하는 코드를 작성할 수 있었다.

무엇을 새롭게 알았는지

  • self의 사용법: 클래스 내부에서 인스턴스 변수와 메서드를 참조할 때 self를 사용하는 방법을 명확히 이해하게 되었다. 이는 클래스의 상태를 관리하고, 메서드 간에 데이터를 공유하는 데 중요하다.
  • 메서드 호출 시 매개변수의 순서: 메서드를 정의할 때와 호출할 때 매개변수의 순서를 준수해야 한다는 것을 배웠다. 잘못된 순서로 매개변수를 전달하면 논리적인 오류가 발생할 수 있다.
728x90