전체 윷 던지기 기록과 보드 위 말 위치로 규칙상 도달 가능한 배치인지 판정합니다.
어려움8백트래킹시뮬레이션구현아직 제출이 없습니다시간 제한10초메모리 제한512 MB윷놀이는 반달 모양의 윷가락을 던져 말을 옮기는 한국의 민속놀이다. 두 팀이 번갈아 윷을 던지고, 자기 말을 모두 결승점으로 통과시킨 팀이 이긴다. 윷놀이의 규칙은 지역마다 다르므로 여기서는 아래 규칙만 따른다.
Do): 앞으로 한 칸 간다.Gae): 앞으로 두 칸 간다.Gul): 앞으로 세 칸 간다.Yut): 앞으로 네 칸 가고, 윷을 한 번 더 던진다.Mo): 앞으로 다섯 칸 가고, 윷을 한 번 더 던진다.한 번 던질 때마다 움직일 수 있는 말 중 하나를 골라 나온 칸 수만큼 옮긴다. 판 밖에 있는 말도 움직일 수 있는 말에 포함되며, 나온 칸 수만큼 판에 올려놓는다. 나온 순서대로 옮겨야 하므로 모를 던진 다음 걸이 나왔다면 다섯 칸을 먼저 옮기고 세 칸을 나중에 옮긴다.
자기 말이 자기 다른 말과 같은 칸에 도착하면 업기가 되어 다음 이동부터 항상 함께 움직인다. 자기 말이 상대 팀 말이 있는 칸에 도착하면 그 칸의 상대 말을 모두 잡고, 잡은 팀이 윷을 한 번 더 던진다. 잡힌 말은 처음부터 다시 출발한다. 윷이나 모로 잡았을 때도 추가로 던지는 횟수는 두 번이 아니라 한 번이다.
말은 판 밖에서 출발하고, 판 위에 올라오기 전에는 잡히지 않는다. 결승점을 완전히 지나쳐야 통과로 인정한다. 통과한 말은 다시 쓰지 않으며, 한 팀의 말이 모두 통과하는 순간 그 팀이 이기고 경기가 끝난다. 마지막에 윷이나 모로 이겼더라도 경기가 끝난 뒤에는 더 던지지 않는다.

말판의 칸에는 0번부터 28번까지 번호가 붙어 있다. 바깥 둘레는 0, 1, 2, 3에서 19까지 차례로 이어지고 19번 다음은 다시 0번이다. 5번, 10번, 22번(가운데)은 그림에서 빨간 점으로 표시된 칸이고, 말이 이 칸에 정확히 멈추면 다음 이동부터 지름길로 간다. 칸을 지나가기만 할 때는 지름길로 들어가지 않는다. 각 출발 칸에서 앞으로 나아가는 경로는 다음과 같다. 표의 "통과"는 결승점을 지나 판에서 빠지는 것을 뜻하고, 이동할 칸 수가 남은 경로보다 길면 그대로 통과한다.
| 출발 칸 | 앞으로 가는 경로 |
|---|---|
| 판 밖 | 1, 2, 3, 4, 5 |
| 0 | 통과 |
| 1, 2, 3, 4 | 다음 번호부터 19까지, 0, 통과 |
| 5 | 20, 21, 22, 23, 24, 15, 16, 17, 18, 19, 0, 통과 |
| 6, 7, 8, 9 | 다음 번호부터 19까지, 0, 통과 |
| 10 | 25, 26, 22, 27, 28, 0, 통과 |
| 11부터 19까지 | 다음 번호부터 19까지, 0, 통과 |
| 20 | 21, 22, 23, 24, 15, 16, 17, 18, 19, 0, 통과 |
| 21 | 22, 23, 24, 15, 16, 17, 18, 19, 0, 통과 |
| 22 | 27, 28, 0, 통과 |
| 23 | 24, 15, 16, 17, 18, 19, 0, 통과 |
| 24 | 15, 16, 17, 18, 19, 0, 통과 |
| 25 | 26, 22, 27, 28, 0, 통과 |
| 26 | 22, 27, 28, 0, 통과 |
| 27 | 28, 0, 통과 |
| 28 | 0, 통과 |
19번에 있는 말이 한 칸을 가면 0번에 서고, 아직 통과한 것이 아니므로 상대에게 잡힐 수 있다. 0번에 있는 말은 몇 칸을 가든 그대로 통과한다.
용이네 가족은 명절에 A 팀과 B 팀으로 나뉘어 윷놀이를 했다. A 팀이 먼저 시작했고, 던진 윷을 모두 순서대로 종이에 적어 두었다. 저녁 먹을 때가 되어 경기가 진행 중이거나 막 끝났을 무렵, 강아지 퍼피가 말판을 지나다니며 흐트러뜨렸다. 아직 출발하지 않은 말과 이미 통과한 말은 건드리지 않았다. 게다가 퍼피는 각 던지기가 어느 팀 것인지 적어 둔 부분을 종이에서 모두 물어뜯어 갔다. 용이는 기억을 되살려 말판을 복구했지만, 이 배치가 종이에 남은 던지기 목록과 순서에 맞는지 확신하지 못한다.
던진 윷의 전체 목록과 복구한 말판이 주어진다. 목록에 적힌 던지기는 실제로 던진 전부이고 순서도 그대로다. 복구한 말판이 실제로 나올 수 있는 배치인지 판정하라.
첫 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어진다.
U N A B
윷1 ... 윷N
A팀말1 ... A팀말A
B팀말1 ... B팀말B
첫 줄에 정수 U, N, A, B가 공백으로 구분되어 주어진다. U는 한 팀이 쓰는 말의 수, N은 던진 윷의 개수, A는 판 위에 남아 있는 A 팀 말의 개수, B는 판 위에 남아 있는 B 팀 말의 개수다.
둘째 줄에 던진 윷 N개가 던진 순서대로 공백으로 구분되어 주어진다. 각 값은 Do, Gae, Gul, Yut, Mo 중 하나다.
셋째 줄에 A 팀 말의 위치가 A개, 넷째 줄에 B 팀 말의 위치가 B개 공백으로 구분되어 주어진다. 개수가 0이면 그 줄은 빈 줄이다. 같은 칸에 업혀 있는 말은 그 칸의 번호가 말의 수만큼 적힌다. 아직 출발하지 않은 말과 이미 통과한 말의 위치는 주어지지 않는다.
각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 판정 결과다. 주어진 던지기 목록으로 만들 수 있는 말판이면 YES, 그렇지 않으면 NO를 출력한다.