https://www.youtube.com/watch?v=l-hh51ncgDI
https://velog.io/@minjujuu/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-Min-max-tree
위 자료를 참고했다.
https://school.programmers.co.kr/learn/courses/30/lessons/92345
위 알고리즘 문제를 풀다가 minimax 알고리즘이 활용된다는 것을 알게 되었다.
분명 전에 접한 개념인데, 다시 보니 기억이 잘 안나 공부 겸 정리해보고자 한다.
내가 이해하기 위해 정리한거라 설명이 명쾌하지 않을 수 있다.
각 player는 maximize / minimize하는 방향으로 노드를 선택하는데, 그렇기에 특정 노드값이 계산되는 시점에서 pruning이 가능하다
Beta, Alpha값을 통해 함수 호출 중 cut-off를 진행해준다.
아래 예시의 알파, 베타값은 최종 알파, 베타값을 나타낸 건데 함수가 호출되면서 노드값이 계산되는 과정을 생각하보면 이해할 수 있다.
코드랑 같이 봐야 이해가 편하다.
사실, 이렇게 정리해봤는데도 헷갈린다. 관련 문제 접하면서 익숙해져야 할듯
https://github.com/ljwljy51/Algorithm/blob/main/Programmers/ETC/Lv3_2022_KAKAO_%EC%82%AC%EB%9D%BC%EC%A7%80%EB%8A%94%EB%B0%9C%ED%8C%90.py
결국 솔루션을 참고해서 문제를 풀었는데,
여전히 이해가 어렵다 ^_^..................
나는 재귀&백트래킹 문제에 특히 약한 것 같다.(랑 DP....)
문제 많이 풀자 ㅜㅜ..