Connect3

시간 제한0.5초메모리 제한512 MB

요약
흑의 첫 수 열 x와 백의 마지막 착수 칸 (a,b)가 주어질 때, 그 수로 백이 처음으로 세 개를 잇는 최종 4x4 보드 상태의 수를 센다.
난이도

보통10점 중 5점

유형
백트래킹, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

Connect3은 Connect4를 단순하게 바꾼 게임이다. 검은 돌을 쥔 사람과 흰 돌을 쥔 사람이 번갈아 4×44 \times 4 판에 자기 색 돌을 놓는다. 각 칸은 (a,b)(a, b)로 쓰고, aa는 행, bb는 열이다. 왼쪽 아래 칸이 (1,1)(1, 1)이고 오른쪽 위 칸이 (4,4)(4, 4)이다.

자기 차례가 되면 열을 하나 고르고, 돌은 그 열에서 가장 아래에 있는 빈 칸에 놓인다. 예를 들어 (3,1)(3, 1)은 (2,1)(2, 1)과 (1,1)(1, 1)이 이미 차 있을 때만 놓을 수 있다.

(4, 1)(4, 2)(4, 3)(4, 4)
(3, 1)(3, 2)(3, 3)(3, 4)
(2, 1)(2, 2)(2, 3)(2, 4)
(1, 1)(1, 2)(1, 3)(1, 4)

Connect3의 판이다. 각 칸은 행 aa와 열 bb를 써서 (a,b)(a, b)로 나타낸다.

같은 색 돌 세 개가 가로, 세로, 대각선 중 한 방향으로 연이어 놓이는 순간 게임이 끝나고 그 색을 쥔 사람이 이긴다. 그런 세 개가 없는 동안에는 게임이 이어진다.

검은 돌이 먼저 (1,x)(1, x)에 놓이고, 그다음부터 흰 돌과 검은 돌이 번갈아 놓인다. 게임은 흰 돌이 (a,b)(a, b)에 놓이면서 끝난다. 즉 (a,b)(a, b)의 흰 돌이 흰 돌 세 개를 잇는 마지막 돌이다. 이때의 판을 ss라고 하자. 가능한 ss가 몇 가지인지 세어라. 돌을 놓은 순서는 상관없다. 모든 칸의 상태, 즉 검은 돌인지 흰 돌인지 빈 칸인지가 전부 같을 때만 두 판을 같은 판으로 본다. 이렇게 끝나는 게임이 하나도 없으면 답은 0이다.

입력

첫째 줄에 정수 xx (1≤x≤41 \le x \le 4)가 주어진다. 검은 돌이 처음 놓이는 칸 (1,x)(1, x)의 열이다.

둘째 줄에 게임의 마지막 돌이 놓인 칸 (a,b)(a, b)를 나타내는 두 정수 aa와 bb (1≤a≤41 \le a \le 4, 1≤b≤41 \le b \le 4)가 주어진다.

출력

마지막 판 ss로 가능한 경우의 수를 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    2
    2 3
    
    예상 출력
    516
    
  2. 예제 2

    입력
    3
    4 4
    
    예상 출력
    177