2022년 08월 11일 목요일 - 아유 요즘 문제가 안풀려 머리가 그냥 굳었어


오늘 올려볼 문제는 98번 Validate Binary Search Tree 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

요즘따라 문제 접근 방식에 대한 실력이 많이 줄은 것 같다...


입력


사진에서도 볼 수 있듯이 Binary Search Tree의 루트 노드가 입력으로 들어온다.



풀이 및 코드


주어진 Binary Search Tree가 Valid한지 판단하여 리턴하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

Inorder로 트리를 순회하면서 이전 노드의 값을 기억한다.

만약 이전 노드보다 작은 값을 가진 노드가 나오면 false를 리턴하는 식으로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    int pre = -1;
    boolean hasPre = false;
    boolean result = true;
    public boolean isValidBST(TreeNode root) {
        solve(root);
        return result;
    }
    
    public void solve(TreeNode root) {
        if(root == null) return;
        
        solve(root.left);
        if(hasPre && pre >= root.val) result = false;
        hasPre = true;
        pre = root.val;
        solve(root.right);
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘 문제도 맨처음 봤을 때는 루트 노드부터 시작해서 어디까지 저장해야하나라는 생각으로 쉬운 방법을 생각하지 못 할 뻔했다.

다행히 Inorder를 생각해내서 문제를 쉽게 풀 수 있었던 것 같다.

요즘 들어서 일이 힘들기도하고 문제를 푸는데 시간을 별로 안들이려고 해서 답을 일찍 보기도 해서 그런지 몰라도 머리가 많이 굳은 것 같다.

내가 못풀고 스터디원들이 푸는 경우도 많아졌다. (물론 바라던 바였지만 내가 실력이 떨어져서 생긴 느낌이 더 강하다.)

다실 실력을 되찾고 싶은 생각이 들지만 그렇다고 시간을 들이기는 또 귀찮으니 굉장히 이기적인 상태에 있는 느낌이다.

하지만 그래도 꾸준히하고는 있으니 나중에 알고리즘 각잡고 할 때는 도움이 되지 않을까 생각하고 있긴하다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts