더 큰 소코반 40k
시간 제한1초메모리 제한1024 MB
최소 40,000번의 이동이 필요한 2x2 상자와 2x2 저장 위치 하나를 가진 Bigger Sokoban 격자를 만듭니다.
문제
소코반은 유명한 퍼즐 게임이다. 플레이어는 크기의 격자 안을 움직이며 크기의 상자를 크기의 보관 장소로 민다.
더 큰 소코반은 상자와 보관 장소가 보다 큰 소코반의 변형이다. 이 문제에서는 둘 다 크기이다.
더 큰 소코반의 규칙은 소코반과 같다. 격자의 각 칸은 빈칸이거나 벽이다. 일부 빈칸 영역에는 크기의 상자가 하나씩 놓여 있고, 일부 빈칸 영역은 각각 크기의 보관 장소로 표시되어 있다.
플레이어는 상하좌우로 인접한 빈칸으로 이동한다. 벽, 상자, 격자 밖은 지나갈 수 없다. 플레이어가 상자가 있는 칸으로 들어가려 하면 상자는 그 방향으로 한 칸 밀린다. 상자는 다른 상자, 벽, 격자 밖으로 밀 수 없고, 당길 수도 없다. 상자의 개수는 보관 장소의 개수와 같다. 모든 상자가 보관 장소에 놓이면 퍼즐이 풀린다.
풀기 위해 40,000번 이상의 이동이 필요한 더 큰 소코반 격자를 만들어라. 격자는 다음 조건을 만족해야 한다.
- .
- 격자에는 상자 하나와 보관 장소 하나가 있다.
- 플레이어, 상자, 보관 장소는 서로 겹치지 않는다.
입력
이 문제에는 입력이 없다.
출력
첫 줄에 격자의 크기를 나타내는 두 정수 과 을 공백으로 구분해 출력한다.
이어서 줄에 걸쳐 격자의 각 행을 나타내는 길이 의 문자열을 출력한다. 문자열은 ., #, P, B, S로 이루어지며, 각각 빈칸, 벽, 플레이어, 상자, 보관 장소를 뜻한다.
격자에는 P가 정확히 하나, B가 정확히 네 개, S가 정확히 네 개 있어야 한다. B는 하나의 정사각형을 이뤄야 하고, S도 하나의 정사각형을 이뤄야 한다. 격자는 반드시 풀 수 있어야 한다.