그룹 — 운명을 공유하는 돌들
자 이제 진짜 핵심. 그룹(group).
📖 그룹 (group)
인접한(상/하/좌/우) 같은 색의 돌들은 하나의 그룹으로 묶인다. 그룹은 운명을 같이 한다 — 활로도, 잡힘도, 살아 있음도 모두 그룹 단위로 계산.
아래 보드를 봐. 두 흑돌 (2,1)과 (2,2)는 가로로 붙어 있지? 그래서 같은 그룹이야. 반면 (4,4)에 있는 흑돌은 떨어져 있으니까 별개의 그룹. 둘은 같은 색이지만 운명이 따로따로야.
그러면 활로는 어떻게 셀까? 그룹의 활로는 그룹에 속한 모든 돌의 인접 빈 자리들의 합집합이야. 중복은 한 번만 셈.
💡 직접 계산해보기 — (2,1)-(2,2) 그룹
- (2,1)의 인접: 상(1,1), 하(3,1), 좌(2,0), 우(2,2)는 같은 그룹 ❌
- (2,2)의 인접: 상(1,2), 하(3,2), 좌(2,1)는 같은 그룹 ❌, 우(2,3)
- 활로 자리 모음 (중복 제거): (1,1), (3,1), (2,0), (1,2), (3,2), (2,3) → 6개
아래 보드의 빨간 점을 세보면 확인됨. (4,4) 흑돌은 별개 그룹이라 따로 활로 2개.
잠깐 — 우리가 지금까지 짠 활로 함수는 단일 돌 기준이었어. 두 흑돌의 활로를 각각 따로 세면 (2,1)이 4, (2,2)가 3, 합쳐서 7. 그런데 실제 그룹 활로는 6. 차이가 나는 이유는 두 돌이 서로를 활로처럼 셌기 때문이야 (서로 인접하니까 옆자리지만 빈자리는 아닌 거지). 그리고 (1,1)-(1,2) 같은 자리는 두 돌이 모두 인접하니 중복.
그래서 코드를 다시 짜야 해. 다음 페이지에서 그룹을 BFS로 찾는 법, 그 그룹 전체의 활로 계산하는 법을 배워.
컴포넌트 로딩 중...