오오, 반갑네요. ^^
getCount는 이 셀 주변(8개)에 있는 이미 꽂힌 깃발의 개수 세기, 열리지 않은 뚜껑의 개수 세기 등을 통틀어 일컫는 함수이구요,
doAction은 이 셀 주변에 있는 모든 뚜껑을 열기, 모든 열리지 않은 뚜껑에다 깃발을 꽂기 같은 동작을 총괄합니다.
그냥 코딩 설계 기법이지 알고리즘은 아니니 어려울 건 없습니다. (지금은 밖에 있어서 일단 간단히 기억만으로 말씀드립니다.)
아무 단서 없이 열리지 않은 셀들이 일렬로 쭉 늘어선 채 1 1 2 2 2 1 이런 식으로 있을 때 어느 뚜껑부터 까야 할지 재구성하는 게 참 어렵더군요. 제가 가끔 지는 게 그런 상황에서 뚜껑을 잘못 열어서 집니다. ^^
2번이 결국은 역으로 지뢰찾기를 푼다는 얘기잖아요 그죠?
저도 '휘리릭' 끝낼 수 있는 수준밖에 진척된 게 없답니다. ㅎㅎ
명백한 솔루션이 없는 경우라면..
2 2 3 1
a b c d e
a+b = 2
a+b+c = 2
b+c+d = 3
c+d+e = 1
a+b+c+d+e = 현재 남은 지뢰의 총 개수
단, a~e는 모두 either 0 or 1
결국 이런 논리식인지 방정식인지 모를 식들로부터 a~e 값을 유추해야 하고,
가능한 모든 가짓수들 중에서 어느 경우에도 1일 가능성이 가장 높은 칸을 찍어야겠죠?
문제는 게임 보드로부터 저 식을 도출해서 input/output 포맷을 전환하는 코드를 구현하는 것부터가 보통일이 아닐 듯합니다. orz
지뢰찾기를 연구해 보셨다면 이미 다 찾아 보셨겠지만, 이런 걸 계산해 주는 Minesweeper clone 같은 프로그램도 이미 다 있긴 합니다만 그런 프로그램들은 소스 공개는 아니네요.