떨어지는 블록

3열 10행 보드에 반복되는 펜토미노 조각을 테트리스 규칙으로 떨어뜨려 가장 많이 놓는 개수를 구하고 무한히 이어지면 forever를 출력합니다.

보통7그래프DFS시뮬레이션완전 탐색아직 제출이 없습니다시간 제한4초메모리 제한256 MB

문제

가로 3칸, 세로 10칸인 판에서 하는 테트리스 비슷한 게임이 있다. 판 맨 위에서 조각이 하나씩 떨어지며, 조각은 8가지이고 모두 정사각형 5개를 이어 붙인 펜토미노다. 각 조각의 이름과 모양은 다음과 같다. #은 채워진 칸이고 .은 빈 칸이다.

  T       X       R       S
 ###     .#.     .##     .##
 .#.     ###     ##.     .#.
 .#.     .#.     .#.     ##.

  Z       V       7       W
 ##.     #..     ##.     #..
 .#.     #..     .##     ##.
 .##     ###     .#.     .##

조각은 0도, 90도, 180도, 270도로 마음대로 회전할 수 있다. 뒤집을 수는 없다.

규칙은 테트리스와 비슷하다. 새 조각의 회전 상태와 가로 위치를 정하면 조각은 판 맨 위에서 아래로 곧장 내려가고, 판 바닥이나 이미 쌓인 블록에 닿는 순간 멈춘다. 옆으로 밀거나 튀어나온 블록 밑으로 끼워 넣지는 못한다. 조각이 멈추면 꽉 찬 줄을 모두 지우고, 그 위에 있던 줄은 내용이 바뀌지 않은 채 그대로 아래로 내려온다.

빈 판에 R 조각을 회전하지 않고 떨어뜨리면 위 그림의 첫 번째 판이 된다. 그 위에 회전한 Z 조각을 떨어뜨리면 두 줄이 꽉 찬다. 이 두 줄을 지우고 위의 줄을 아래로 내리면 위 그림의 마지막 판이 된다. 마지막 판에는 공중에 뜬 블록이 있는데, 이 블록은 더 내려가지 않는다.

테트리스와 다른 점이 하나 있다. 조각을 놓으려면 판 맨 위 세 줄이 완전히 비어 있어야 한다. 즉 꽉 찬 줄을 모두 지운 뒤 맨 위 세 줄 가운데 하나라도 비어 있지 않으면 게임이 끝난다.

점수는 게임이 끝날 때까지 판에 놓은 조각의 개수로만 정해진다. 끝없이 되풀이되는 조각의 순서가 주어질 때, 놓을 수 있는 조각 개수의 최댓값을 구하여라.

규칙을 보여 주는 순서를 몇 가지 살펴보자.

순서가 X이면 X 조각을 놓을 때마다 뒤에 오는 X 조각으로는 지울 수 없는 줄이 두 개씩 남는다. 네 개를 놓고 나면 비어 있지 않은 줄이 여덟 개라 다섯 번째 X 조각은 놓을 수 없고, 답은 4다.

순서가 XXXXR이면 R 조각을 회전해 가장 높은 줄에 남은 칸을 피해 놓을 수도 있지만, 조각을 놓기 전에 맨 위 세 줄이 비어 있어야 한다는 규칙 때문에 그렇게 놓을 수 없다. 답은 4다.

순서가 VZV이면 V 조각 두 개와 Z 조각 하나로 판을 모두 비울 수 있어 게임을 끝없이 이어 갈 수 있다.

입력

조각의 순서를 나타내는 문자열이 한 줄에 주어진다. 문자열의 길이는 1 이상 20 이하이고, 각 문자는 T, X, R, S, Z, V, 7, W 가운데 하나다. 이 순서는 끝없이 되풀이된다.

출력

더 이상 조각을 놓을 수 없을 때까지 놓을 수 있는 조각 개수의 최댓값을 한 줄에 출력한다. 게임을 끝없이 이어 갈 수 있으면 forever를 출력한다.