1. 문제 분석
1.1 핵심 요구사항
- 3x3 틱택토 게임판의 상태가 주어질 때, 해당 상태가 규칙을 지켜서 나올 수 있는 상황인지 판단
- 규칙 위반 사항:
- 순서 위반 (O 차례에 X를 두거나 그 반대)
- 게임이 끝난 후에도 계속 진행
- 유효한 상태면 1, 아니면 0을 반환
1.2 접근 방법 검토
- 완전탐색(DFS/백트래킹) 접근
- 가능한 모든 게임 진행 상태를 생성하여 비교
- 장점: 모든 케이스를 커버할 수 있음
- 단점: 시간/공간 복잡도가 매우 높음
- 상태 검증 접근
- O와 X의 개수 관계 검증
- 승리 조건 검증
- 장점: 빠른 실행 시간, 적은 메모리 사용
- 단점: 모든 예외 케이스를 고려해야 함
1.3 시간 복잡도 분석
- 완전탐색 접근
- 시간 복잡도: O(9!)
- 공간 복잡도: O(9! * 9)
- 9!가지의 게임 진행 순서를 모두 검사
- 상태 검증 접근
- 시간 복잡도: O(1)
- 공간 복잡도: O(1)
- 고정된 크기(3x3)의 게임판만 검사
팁
상태 검증 접근이 가장 효율적입니다. 게임판 크기가 3x3으로 고정되어 있고, 간단한 규칙으로 유효성을 판단할 수 있기 때문입니다.
2. 문제 풀이
2.1 풀이 전략
- O와 X의 개수 관계 확인
- O의 개수는 X의 개수와 같거나 하나 더 많아야 함
- 승리 조건 검증
- O가 이겼을 때는 O가 X보다 하나 더 많아야 함
- X가 이겼을 때는 O와 X의 개수가 같아야 함
- O와 X가 동시에 이길 수 없음