아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Tri-Color Puzzle

시간 제한1초메모리 제한1024 MB

요약
일부 칸의 색이 주어진 삼각형 모양 칸 퍼즐에서, 위쪽 칸과 아래쪽 두 칸이 모두 같은 색이거나 모두 다른 색이 되도록 칸을 칠하는 방법의 수를 구합니다.
난이도

보통10점 중 6점

유형
수학, 행렬
정답자
아직 제출이 없습니다

문제

Tri-Color Puzzle은 한 변에 SS개의 셀이 놓이는 육각형 셀을 삼각형 모양으로 배열한 퍼즐이며, 셀의 총개수는 N=S(S+1)2N = \frac{S(S+1)}{2}이다. 예를 들어 아래는 한 변이 4이고 셀이 10개인 퍼즐이다.

퍼즐을 풀려면 모든 셀을 빨강, 초록, 파랑 중 하나로 칠해야 한다. 위에 셀 하나, 아래에 셀 두 개가 놓인 세 셀의 각 묶음에서, 세 셀의 색이 모두 같거나 세 셀의 색이 모두 달라야 한다. 설명을 분명하게 하려고 색과 함께 빗금 무늬도 사용한다.

빨강 = 초록 = 파랑 =

어떤 퍼즐은 일부 셀의 색이 미리 정해져 있고, 나머지 셀은 위의 규칙에 따라 채운다. 아래 예시의 해는 3개이다.

아래 예시에는 해가 없다.

아래 예시의 해는 정확히 1개이다.

입력으로 Tri-Color Puzzle의 내용을 받아, 그 퍼즐의 해의 개수를 출력하는 프로그램을 작성하라.

입력

첫 줄에는 공백으로 구분된 10진수 정수 SS와 II가 주어진다 (3≤S≤193 \le S \le 19, 0≤I≤N=S(S+1)20 \le I \le N = \frac{S(S+1)}{2}). 첫 줄 다음에는 II개의 줄이 이어지며, 각 줄에는 행 번호 rr, 그 행에서 셀의 위치 cc, 초기 색 하나의 색 코드 cccc가 10진수 정수 세 개로 주어진다 (1≤r≤S1 \le r \le S, 1≤c≤r1 \le c \le r, 0≤cc≤20 \le cc \le 2). 코드 0은 빨강, 1은 초록, 2는 파랑을 뜻한다.

출력

입력으로 주어진 Tri-Color Puzzle의 해의 개수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    4 4
    1 1 0
    2 1 2
    4 1 2
    4 4 2
    
    예상 출력
    0
    
  2. 예제 2

    입력
    4 4
    1 1 1
    2 1 2
    4 1 2
    3 3 2
    
    예상 출력
    1
    
  3. 예제 3

    입력
    4 4
    1 1 0
    2 1 1
    4 1 0
    4 4 0
    
    예상 출력
    3