PART 1 회고 — 우리가 만든 것
축하해. 여기까지 잘 왔다. 잠시 멈춰서 우리가 만든 게 뭔지 정리해보자.
🏗️ PART 1에서 만든 것
- Ch 1: 바둑판 표현 (2D 리스트)
- Ch 2: 활로 + 단수 — 돌의 생명력
- Ch 3: 따냄 + 그룹 + 자살수 — 진짜 한 수 처리
- Ch 4: 패 규칙 — 무한 루프 방지
- Ch 5: 집 + 덤 + 점수 — 승부 판정
- Ch 6: Board 클래스 — 모든 걸 OOP로 통합
코드량으로 보면 약 100줄짜리 Board 클래스. 이게 알파고의 가장 작은 기반이야. 알파고 코드는 C++로 짜여 있고 더 최적화되어 있지만 — 알고리즘 본질은 똑같다.
💪 이제 할 수 있는 것
- 두 사람이 번갈아 두는 5x5 또는 7x7 바둑 게임을 시뮬레이션
- 모든 규칙(따냄/자살수/패/집/덤)을 정확히 처리
- 완전한 점수 계산과 승자 판정
- 한 게임을 1초 안에 시뮬레이션 (수만 게임도 분 단위로 가능)
마지막은 안 보이지만 매우 중요해. 빠른 시뮬레이션이 알파고의 핵심 엔진을 굴리는 연료야. PART 3에서 몬테카를로 탐색(MCTS)을 만들 때, 한 수를 결정하기 위해 수천 번의 랜덤 게임을 돌려. play()가 빠를수록 더 정확한 판단이 가능.
🛠️ 이제 잠시 휴식해도 OK
여기까지가 "바둑 규칙"의 끝. PART 2부터는 본격적인 "알파고 알고리즘"이 시작돼. 잠시 쉬고 머리 정리하고 와도 좋아. 코드 직접 실행해보거나, 두 사람이 두는 게임 시뮬레이션을 짜보는 것도 추천.