너비 3, 높이 10인 테트리스 판에서 정해진 모양 수열이 끝없이 반복될 때, 위쪽 세 줄이 차기 전까지 최대 몇 개의 조각을 떨어뜨릴 수 있는지 구하고 영원히 가능하면 -1을 출력한다.
어려움8동적 계획법시뮬레이션구현그리디아직 제출이 없습니다시간 제한2.5초메모리 제한512 MB소냐가 장난감 상자에서 오래된 테트리스 게임기를 찾았다. 판은 가로 3칸, 세로 10칸이다. 행은 위에서부터 1번에서 10번, 열은 왼쪽에서부터 1번에서 3번이다.
이 게임에는 0번부터 9번까지 10가지 조각이 있고, 모든 조각은 3 x 3 상자 안에 들어간다. 아래 그림에서 #은 채워진 칸, .은 빈 칸이다.
0 1 2 3 4
.#. ### ##. .## ##.
### #.. .## .#. .#.
.#. #.. ..# ##. .##
5 6 7 8 9
.#. .#. .#. .## ..#
.#. ### .## ### ###
### .## ##. ##. ##.

조각은 끝없이 내려온다. 수열 a1,a2,…,an이 계속 반복되므로 k번째 조각의 모양은 a((k−1)modn)+1이다.
조각이 떨어지기 전에 소냐는 조각을 90도의 배수만큼 돌리고 좌우로 옮긴다. 뒤집을 수는 없다. 조각은 3개 열 안에 모두 들어가야 한다. 그다음 조각은 회전 상태와 열을 그대로 유지한 채 한 행씩 곧장 아래로 내려가고, 한 행 더 내려가면 판 밖으로 나가거나 채워진 칸과 겹치게 되는 바로 직전에 멈춘다.
조각이 멈추면 세 칸이 모두 채워진 행은 사라지고, 사라진 행보다 위에 있던 행은 자기 아래에서 사라진 행의 수만큼 내려온다.
행이 사라진 뒤 맨 위 3개 행에 채워진 칸이 하나라도 있으면 게임이 끝난다. 조각은 멈추는 순간 떨어진 것으로 세므로, 게임을 끝낸 조각도 개수에 포함한다.
게임이 이어지는 동안 맨 위 3개 행은 비어 있으므로, 어떤 조각이든 항상 놓을 수 있다.
소냐는 떨어지는 조각을 최대한 많이 만들고 싶다. 게임이 영원히 끝나지 않을 수도 있고, 그럴 때는 아예 시작하지 않는 편이 낫다.
첫째 줄에 수열 a의 길이 n이 주어진다 (1≤n≤50).
둘째 줄에 수열의 원소 a1,a2,…,an이 주어진다 (0≤ai≤9).
게임이 끝나기 전까지 떨어질 수 있는 조각 개수의 최댓값을 한 줄에 출력한다. 소냐가 조각을 영원히 떨어뜨릴 수 있으면 −1을 출력한다.