시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 512 MB | 185 | 61 | 57 | 39.310% |
현욱은 루빅스 큐브를 갖고 놀다가, 비슷한 퍼즐을 이차원에서 만들 수는 없을까하는 생각이 들었다.
고민 끝에 현욱은 2D Cube라는 이름의 퍼즐을 만들었다. 크기가 $N$($ 2 \le N \le 50 $)인 2D 큐브는 처음에 다음과 같은 상태로 시작한다.
$N=5$일 때 2D Cube의 초기 상태
여기서, 큐브를 맞추기 위해 플레이어는 아래 두 가지 종류의 동작을 할 수 있다.
현욱은 위 동작을 이용해서 섞어놓은 큐브를 다시 맨 처음 상태로 되돌리고 싶다. 이 때, 동작 횟수가 너무 많으면 수행하기 힘들기 때문에 동작을 최대 $20000$번 아래로 수행해서 큐브를 맞추고 싶다. 현욱을 도와 $20000$번 이하의 동작으로 큐브를 맞추는 방법을 찾는 프로그램을 작성해보자. 주어진 입력에서 큐브를 $20000$번 이하의 동작으로 맞추는 방법은 항상 존재한다.
첫 줄에 큐브의 크기 $N$이 주어진다($ 2 \le N \le 50 $).
둘째 줄부터 $N$ 줄에 걸쳐 큐브의 맨 윗줄부터 순서대로 큐브의 현재 상태를 나타내는 값이 주어진다.
첫 줄에 수행한 연산 횟수 $K$를 출력한다($ 0 \le K \le 20000$).
둘째 줄부터 $K$ 줄에 걸쳐 수행한 연산을 순서대로 출력한다.
$N = 2$
위에서 $i$번째 줄의 $j$번째 칸의 값($Val(i,j)$)이 $j$임을 만족하는 데이터만 주어진다.
추가 제한 없음
2 2 1 2 1
2 R 1 1 D 2 1
2 1 2 1 2
2 R 1 1 D 1 1
이 입력은 서브태스크 2의 조건을 만족한다.
3 1 1 2 2 1 3 3 2 3
3 D 2 2 R 3 1 D 3 1
Contest > BOJ User Contest > 소프트콘 > 제3회 소프트콘 B번