BOJ_12100_2048_JAVA
문제 : 2048
링크 : BOJ_12100_2048
접근 방식
게임 2048의 기능을 구현하는 문제였다. 횟수가 5번으로 정해져 있었기 때문에 중복순열을 이용한 완전탐색으로 풀 수 있었다.
2048의 기능은, 이동하고자 하는 방향의 끝점으로부터 반대쪽으로 탐색하며, 같은 숫자가 존재한다면 합치고, 다른 숫자인 경우 이동하고자 하는 방향으로 이동시킨다. 한 번 합쳐진 칸에는 방문처리를 하여 한 번 합쳐진 숫자가 다시 합쳐지는 일이 없도록 했다.
시간을 줄여보기 위해서 5개에서 5개를 뽑는 중복순열을 미리 구해서 배열로 선언해보았다. 선언하기 이전보다 속도가 많이 빨라졌지만, 위의 2048의 기능을 수행하는 부분에서 생각보다 많이 걸려 다른 문제풀이만큼 처리시간을 줄이지는 못했다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BOJ_12100_2048 {
static int N, arr[][];
static int numbers[];
static int answer;
static int arr2[][];
public static int[] dx = { -1, 1, 0, 0 };
public static int[] dy = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(in.readLine());
arr = new int[N][N];
StringTokenizer st;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(in.readLine(), " ");
for (int j = 0; j < N; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
arr2 = new int[][] { { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 3 },
{ 0, 0, 0, 1, 0 }, { 0, 0, 0, 1, 1 }, { 0, 0, 0, 1, 2 }, { 0, 0, 0, 1, 3 }, { 0, 0, 0, 2, 0 },
{ 0, 0, 0, 2, 1 }, { 0, 0, 0, 2, 2 }, { 0, 0, 0, 2, 3 }, { 0, 0, 0, 3, 0 }, { 0, 0, 0, 3, 1 },
{ 0, 0, 0, 3, 2 }, { 0, 0, 0, 3, 3 }, { 0, 0, 1, 0, 0 }, { 0, 0, 1, 0, 1 }, { 0, 0, 1, 0, 2 },
{ 0, 0, 1, 0, 3 }, { 0, 0, 1, 1, 0 }, { 0, 0, 1, 1, 1 }, { 0, 0, 1, 1, 2 }, { 0, 0, 1, 1, 3 },
{ 0, 0, 1, 2, 0 }, { 0, 0, 1, 2, 1 }, { 0, 0, 1, 2, 2 }, { 0, 0, 1, 2, 3 }, { 0, 0, 1, 3, 0 },
{ 0, 0, 1, 3, 1 }, { 0, 0, 1, 3, 2 }, { 0, 0, 1, 3, 3 }, { 0, 0, 2, 0, 0 }, { 0, 0, 2, 0, 1 },
{ 0, 0, 2, 0, 2 }, { 0, 0, 2, 0, 3 }, { 0, 0, 2, 1, 0 }, { 0, 0, 2, 1, 1 }, { 0, 0, 2, 1, 2 },
{ 0, 0, 2, 1, 3 }, { 0, 0, 2, 2, 0 }, { 0, 0, 2, 2, 1 }, { 0, 0, 2, 2, 2 }, { 0, 0, 2, 2, 3 },
{ 0, 0, 2, 3, 0 }, { 0, 0, 2, 3, 1 }, { 0, 0, 2, 3, 2 }, { 0, 0, 2, 3, 3 }, { 0, 0, 3, 0, 0 },
{ 0, 0, 3, 0, 1 }, { 0, 0, 3, 0, 2 }, { 0, 0, 3, 0, 3 }, { 0, 0, 3, 1, 0 }, { 0, 0, 3, 1, 1 },
{ 0, 0, 3, 1, 2 }, { 0, 0, 3, 1, 3 }, { 0, 0, 3, 2, 0 }, { 0, 0, 3, 2, 1 }, { 0, 0, 3, 2, 2 },
{ 0, 0, 3, 2, 3 }, { 0, 0, 3, 3, 0 }, { 0, 0, 3, 3, 1 }, { 0, 0, 3, 3, 2 }, { 0, 0, 3, 3, 3 },
{ 0, 1, 0, 0, 0 }, { 0, 1, 0, 0, 1 }, { 0, 1, 0, 0, 2 }, { 0, 1, 0, 0, 3 }, { 0, 1, 0, 1, 0 },
{ 0, 1, 0, 1, 1 }, { 0, 1, 0, 1, 2 }, { 0, 1, 0, 1, 3 }, { 0, 1, 0, 2, 0 }, { 0, 1, 0, 2, 1 },
{ 0, 1, 0, 2, 2 }, { 0, 1, 0, 2, 3 }, { 0, 1, 0, 3, 0 }, { 0, 1, 0, 3, 1 }, { 0, 1, 0, 3, 2 },
{ 0, 1, 0, 3, 3 }, { 0, 1, 1, 0, 0 }, { 0, 1, 1, 0, 1 }, { 0, 1, 1, 0, 2 }, { 0, 1, 1, 0, 3 },
{ 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1 }, { 0, 1, 1, 1, 2 }, { 0, 1, 1, 1, 3 }, { 0, 1, 1, 2, 0 },
{ 0, 1, 1, 2, 1 }, { 0, 1, 1, 2, 2 }, { 0, 1, 1, 2, 3 }, { 0, 1, 1, 3, 0 }, { 0, 1, 1, 3, 1 },
{ 0, 1, 1, 3, 2 }, { 0, 1, 1, 3, 3 }, { 0, 1, 2, 0, 0 }, { 0, 1, 2, 0, 1 }, { 0, 1, 2, 0, 2 },
{ 0, 1, 2, 0, 3 }, { 0, 1, 2, 1, 0 }, { 0, 1, 2, 1, 1 }, { 0, 1, 2, 1, 2 }, { 0, 1, 2, 1, 3 },
{ 0, 1, 2, 2, 0 }, { 0, 1, 2, 2, 1 }, { 0, 1, 2, 2, 2 }, { 0, 1, 2, 2, 3 }, { 0, 1, 2, 3, 0 },
{ 0, 1, 2, 3, 1 }, { 0, 1, 2, 3, 2 }, { 0, 1, 2, 3, 3 }, { 0, 1, 3, 0, 0 }, { 0, 1, 3, 0, 1 },
{ 0, 1, 3, 0, 2 }, { 0, 1, 3, 0, 3 }, { 0, 1, 3, 1, 0 }, { 0, 1, 3, 1, 1 }, { 0, 1, 3, 1, 2 },
{ 0, 1, 3, 1, 3 }, { 0, 1, 3, 2, 0 }, { 0, 1, 3, 2, 1 }, { 0, 1, 3, 2, 2 }, { 0, 1, 3, 2, 3 },
{ 0, 1, 3, 3, 0 }, { 0, 1, 3, 3, 1 }, { 0, 1, 3, 3, 2 }, { 0, 1, 3, 3, 3 }, { 0, 2, 0, 0, 0 },
{ 0, 2, 0, 0, 1 }, { 0, 2, 0, 0, 2 }, { 0, 2, 0, 0, 3 }, { 0, 2, 0, 1, 0 }, { 0, 2, 0, 1, 1 },
{ 0, 2, 0, 1, 2 }, { 0, 2, 0, 1, 3 }, { 0, 2, 0, 2, 0 }, { 0, 2, 0, 2, 1 }, { 0, 2, 0, 2, 2 },
{ 0, 2, 0, 2, 3 }, { 0, 2, 0, 3, 0 }, { 0, 2, 0, 3, 1 }, { 0, 2, 0, 3, 2 }, { 0, 2, 0, 3, 3 },
{ 0, 2, 1, 0, 0 }, { 0, 2, 1, 0, 1 }, { 0, 2, 1, 0, 2 }, { 0, 2, 1, 0, 3 }, { 0, 2, 1, 1, 0 },
{ 0, 2, 1, 1, 1 }, { 0, 2, 1, 1, 2 }, { 0, 2, 1, 1, 3 }, { 0, 2, 1, 2, 0 }, { 0, 2, 1, 2, 1 },
{ 0, 2, 1, 2, 2 }, { 0, 2, 1, 2, 3 }, { 0, 2, 1, 3, 0 }, { 0, 2, 1, 3, 1 }, { 0, 2, 1, 3, 2 },
{ 0, 2, 1, 3, 3 }, { 0, 2, 2, 0, 0 }, { 0, 2, 2, 0, 1 }, { 0, 2, 2, 0, 2 }, { 0, 2, 2, 0, 3 },
{ 0, 2, 2, 1, 0 }, { 0, 2, 2, 1, 1 }, { 0, 2, 2, 1, 2 }, { 0, 2, 2, 1, 3 }, { 0, 2, 2, 2, 0 },
{ 0, 2, 2, 2, 1 }, { 0, 2, 2, 2, 2 }, { 0, 2, 2, 2, 3 }, { 0, 2, 2, 3, 0 }, { 0, 2, 2, 3, 1 },
{ 0, 2, 2, 3, 2 }, { 0, 2, 2, 3, 3 }, { 0, 2, 3, 0, 0 }, { 0, 2, 3, 0, 1 }, { 0, 2, 3, 0, 2 },
{ 0, 2, 3, 0, 3 }, { 0, 2, 3, 1, 0 }, { 0, 2, 3, 1, 1 }, { 0, 2, 3, 1, 2 }, { 0, 2, 3, 1, 3 },
{ 0, 2, 3, 2, 0 }, { 0, 2, 3, 2, 1 }, { 0, 2, 3, 2, 2 }, { 0, 2, 3, 2, 3 }, { 0, 2, 3, 3, 0 },
{ 0, 2, 3, 3, 1 }, { 0, 2, 3, 3, 2 }, { 0, 2, 3, 3, 3 }, { 0, 3, 0, 0, 0 }, { 0, 3, 0, 0, 1 },
{ 0, 3, 0, 0, 2 }, { 0, 3, 0, 0, 3 }, { 0, 3, 0, 1, 0 }, { 0, 3, 0, 1, 1 }, { 0, 3, 0, 1, 2 },
{ 0, 3, 0, 1, 3 }, { 0, 3, 0, 2, 0 }, { 0, 3, 0, 2, 1 }, { 0, 3, 0, 2, 2 }, { 0, 3, 0, 2, 3 },
{ 0, 3, 0, 3, 0 }, { 0, 3, 0, 3, 1 }, { 0, 3, 0, 3, 2 }, { 0, 3, 0, 3, 3 }, { 0, 3, 1, 0, 0 },
{ 0, 3, 1, 0, 1 }, { 0, 3, 1, 0, 2 }, { 0, 3, 1, 0, 3 }, { 0, 3, 1, 1, 0 }, { 0, 3, 1, 1, 1 },
{ 0, 3, 1, 1, 2 }, { 0, 3, 1, 1, 3 }, { 0, 3, 1, 2, 0 }, { 0, 3, 1, 2, 1 }, { 0, 3, 1, 2, 2 },
{ 0, 3, 1, 2, 3 }, { 0, 3, 1, 3, 0 }, { 0, 3, 1, 3, 1 }, { 0, 3, 1, 3, 2 }, { 0, 3, 1, 3, 3 },
{ 0, 3, 2, 0, 0 }, { 0, 3, 2, 0, 1 }, { 0, 3, 2, 0, 2 }, { 0, 3, 2, 0, 3 }, { 0, 3, 2, 1, 0 },
{ 0, 3, 2, 1, 1 }, { 0, 3, 2, 1, 2 }, { 0, 3, 2, 1, 3 }, { 0, 3, 2, 2, 0 }, { 0, 3, 2, 2, 1 },
{ 0, 3, 2, 2, 2 }, { 0, 3, 2, 2, 3 }, { 0, 3, 2, 3, 0 }, { 0, 3, 2, 3, 1 }, { 0, 3, 2, 3, 2 },
{ 0, 3, 2, 3, 3 }, { 0, 3, 3, 0, 0 }, { 0, 3, 3, 0, 1 }, { 0, 3, 3, 0, 2 }, { 0, 3, 3, 0, 3 },
{ 0, 3, 3, 1, 0 }, { 0, 3, 3, 1, 1 }, { 0, 3, 3, 1, 2 }, { 0, 3, 3, 1, 3 }, { 0, 3, 3, 2, 0 },
{ 0, 3, 3, 2, 1 }, { 0, 3, 3, 2, 2 }, { 0, 3, 3, 2, 3 }, { 0, 3, 3, 3, 0 }, { 0, 3, 3, 3, 1 },
{ 0, 3, 3, 3, 2 }, { 0, 3, 3, 3, 3 }, { 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1 }, { 1, 0, 0, 0, 2 },
{ 1, 0, 0, 0, 3 }, { 1, 0, 0, 1, 0 }, { 1, 0, 0, 1, 1 }, { 1, 0, 0, 1, 2 }, { 1, 0, 0, 1, 3 },
{ 1, 0, 0, 2, 0 }, { 1, 0, 0, 2, 1 }, { 1, 0, 0, 2, 2 }, { 1, 0, 0, 2, 3 }, { 1, 0, 0, 3, 0 },
{ 1, 0, 0, 3, 1 }, { 1, 0, 0, 3, 2 }, { 1, 0, 0, 3, 3 }, { 1, 0, 1, 0, 0 }, { 1, 0, 1, 0, 1 },
{ 1, 0, 1, 0, 2 }, { 1, 0, 1, 0, 3 }, { 1, 0, 1, 1, 0 }, { 1, 0, 1, 1, 1 }, { 1, 0, 1, 1, 2 },
{ 1, 0, 1, 1, 3 }, { 1, 0, 1, 2, 0 }, { 1, 0, 1, 2, 1 }, { 1, 0, 1, 2, 2 }, { 1, 0, 1, 2, 3 },
{ 1, 0, 1, 3, 0 }, { 1, 0, 1, 3, 1 }, { 1, 0, 1, 3, 2 }, { 1, 0, 1, 3, 3 }, { 1, 0, 2, 0, 0 },
{ 1, 0, 2, 0, 1 }, { 1, 0, 2, 0, 2 }, { 1, 0, 2, 0, 3 }, { 1, 0, 2, 1, 0 }, { 1, 0, 2, 1, 1 },
{ 1, 0, 2, 1, 2 }, { 1, 0, 2, 1, 3 }, { 1, 0, 2, 2, 0 }, { 1, 0, 2, 2, 1 }, { 1, 0, 2, 2, 2 },
{ 1, 0, 2, 2, 3 }, { 1, 0, 2, 3, 0 }, { 1, 0, 2, 3, 1 }, { 1, 0, 2, 3, 2 }, { 1, 0, 2, 3, 3 },
{ 1, 0, 3, 0, 0 }, { 1, 0, 3, 0, 1 }, { 1, 0, 3, 0, 2 }, { 1, 0, 3, 0, 3 }, { 1, 0, 3, 1, 0 },
{ 1, 0, 3, 1, 1 }, { 1, 0, 3, 1, 2 }, { 1, 0, 3, 1, 3 }, { 1, 0, 3, 2, 0 }, { 1, 0, 3, 2, 1 },
{ 1, 0, 3, 2, 2 }, { 1, 0, 3, 2, 3 }, { 1, 0, 3, 3, 0 }, { 1, 0, 3, 3, 1 }, { 1, 0, 3, 3, 2 },
{ 1, 0, 3, 3, 3 }, { 1, 1, 0, 0, 0 }, { 1, 1, 0, 0, 1 }, { 1, 1, 0, 0, 2 }, { 1, 1, 0, 0, 3 },
{ 1, 1, 0, 1, 0 }, { 1, 1, 0, 1, 1 }, { 1, 1, 0, 1, 2 }, { 1, 1, 0, 1, 3 }, { 1, 1, 0, 2, 0 },
{ 1, 1, 0, 2, 1 }, { 1, 1, 0, 2, 2 }, { 1, 1, 0, 2, 3 }, { 1, 1, 0, 3, 0 }, { 1, 1, 0, 3, 1 },
{ 1, 1, 0, 3, 2 }, { 1, 1, 0, 3, 3 }, { 1, 1, 1, 0, 0 }, { 1, 1, 1, 0, 1 }, { 1, 1, 1, 0, 2 },
{ 1, 1, 1, 0, 3 }, { 1, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 2 }, { 1, 1, 1, 1, 3 },
{ 1, 1, 1, 2, 0 }, { 1, 1, 1, 2, 1 }, { 1, 1, 1, 2, 2 }, { 1, 1, 1, 2, 3 }, { 1, 1, 1, 3, 0 },
{ 1, 1, 1, 3, 1 }, { 1, 1, 1, 3, 2 }, { 1, 1, 1, 3, 3 }, { 1, 1, 2, 0, 0 }, { 1, 1, 2, 0, 1 },
{ 1, 1, 2, 0, 2 }, { 1, 1, 2, 0, 3 }, { 1, 1, 2, 1, 0 }, { 1, 1, 2, 1, 1 }, { 1, 1, 2, 1, 2 },
{ 1, 1, 2, 1, 3 }, { 1, 1, 2, 2, 0 }, { 1, 1, 2, 2, 1 }, { 1, 1, 2, 2, 2 }, { 1, 1, 2, 2, 3 },
{ 1, 1, 2, 3, 0 }, { 1, 1, 2, 3, 1 }, { 1, 1, 2, 3, 2 }, { 1, 1, 2, 3, 3 }, { 1, 1, 3, 0, 0 },
{ 1, 1, 3, 0, 1 }, { 1, 1, 3, 0, 2 }, { 1, 1, 3, 0, 3 }, { 1, 1, 3, 1, 0 }, { 1, 1, 3, 1, 1 },
{ 1, 1, 3, 1, 2 }, { 1, 1, 3, 1, 3 }, { 1, 1, 3, 2, 0 }, { 1, 1, 3, 2, 1 }, { 1, 1, 3, 2, 2 },
{ 1, 1, 3, 2, 3 }, { 1, 1, 3, 3, 0 }, { 1, 1, 3, 3, 1 }, { 1, 1, 3, 3, 2 }, { 1, 1, 3, 3, 3 },
{ 1, 2, 0, 0, 0 }, { 1, 2, 0, 0, 1 }, { 1, 2, 0, 0, 2 }, { 1, 2, 0, 0, 3 }, { 1, 2, 0, 1, 0 },
{ 1, 2, 0, 1, 1 }, { 1, 2, 0, 1, 2 }, { 1, 2, 0, 1, 3 }, { 1, 2, 0, 2, 0 }, { 1, 2, 0, 2, 1 },
{ 1, 2, 0, 2, 2 }, { 1, 2, 0, 2, 3 }, { 1, 2, 0, 3, 0 }, { 1, 2, 0, 3, 1 }, { 1, 2, 0, 3, 2 },
{ 1, 2, 0, 3, 3 }, { 1, 2, 1, 0, 0 }, { 1, 2, 1, 0, 1 }, { 1, 2, 1, 0, 2 }, { 1, 2, 1, 0, 3 },
{ 1, 2, 1, 1, 0 }, { 1, 2, 1, 1, 1 }, { 1, 2, 1, 1, 2 }, { 1, 2, 1, 1, 3 }, { 1, 2, 1, 2, 0 },
{ 1, 2, 1, 2, 1 }, { 1, 2, 1, 2, 2 }, { 1, 2, 1, 2, 3 }, { 1, 2, 1, 3, 0 }, { 1, 2, 1, 3, 1 },
{ 1, 2, 1, 3, 2 }, { 1, 2, 1, 3, 3 }, { 1, 2, 2, 0, 0 }, { 1, 2, 2, 0, 1 }, { 1, 2, 2, 0, 2 },
{ 1, 2, 2, 0, 3 }, { 1, 2, 2, 1, 0 }, { 1, 2, 2, 1, 1 }, { 1, 2, 2, 1, 2 }, { 1, 2, 2, 1, 3 },
{ 1, 2, 2, 2, 0 }, { 1, 2, 2, 2, 1 }, { 1, 2, 2, 2, 2 }, { 1, 2, 2, 2, 3 }, { 1, 2, 2, 3, 0 },
{ 1, 2, 2, 3, 1 }, { 1, 2, 2, 3, 2 }, { 1, 2, 2, 3, 3 }, { 1, 2, 3, 0, 0 }, { 1, 2, 3, 0, 1 },
{ 1, 2, 3, 0, 2 }, { 1, 2, 3, 0, 3 }, { 1, 2, 3, 1, 0 }, { 1, 2, 3, 1, 1 }, { 1, 2, 3, 1, 2 },
{ 1, 2, 3, 1, 3 }, { 1, 2, 3, 2, 0 }, { 1, 2, 3, 2, 1 }, { 1, 2, 3, 2, 2 }, { 1, 2, 3, 2, 3 },
{ 1, 2, 3, 3, 0 }, { 1, 2, 3, 3, 1 }, { 1, 2, 3, 3, 2 }, { 1, 2, 3, 3, 3 }, { 1, 3, 0, 0, 0 },
{ 1, 3, 0, 0, 1 }, { 1, 3, 0, 0, 2 }, { 1, 3, 0, 0, 3 }, { 1, 3, 0, 1, 0 }, { 1, 3, 0, 1, 1 },
{ 1, 3, 0, 1, 2 }, { 1, 3, 0, 1, 3 }, { 1, 3, 0, 2, 0 }, { 1, 3, 0, 2, 1 }, { 1, 3, 0, 2, 2 },
{ 1, 3, 0, 2, 3 }, { 1, 3, 0, 3, 0 }, { 1, 3, 0, 3, 1 }, { 1, 3, 0, 3, 2 }, { 1, 3, 0, 3, 3 },
{ 1, 3, 1, 0, 0 }, { 1, 3, 1, 0, 1 }, { 1, 3, 1, 0, 2 }, { 1, 3, 1, 0, 3 }, { 1, 3, 1, 1, 0 },
{ 1, 3, 1, 1, 1 }, { 1, 3, 1, 1, 2 }, { 1, 3, 1, 1, 3 }, { 1, 3, 1, 2, 0 }, { 1, 3, 1, 2, 1 },
{ 1, 3, 1, 2, 2 }, { 1, 3, 1, 2, 3 }, { 1, 3, 1, 3, 0 }, { 1, 3, 1, 3, 1 }, { 1, 3, 1, 3, 2 },
{ 1, 3, 1, 3, 3 }, { 1, 3, 2, 0, 0 }, { 1, 3, 2, 0, 1 }, { 1, 3, 2, 0, 2 }, { 1, 3, 2, 0, 3 },
{ 1, 3, 2, 1, 0 }, { 1, 3, 2, 1, 1 }, { 1, 3, 2, 1, 2 }, { 1, 3, 2, 1, 3 }, { 1, 3, 2, 2, 0 },
{ 1, 3, 2, 2, 1 }, { 1, 3, 2, 2, 2 }, { 1, 3, 2, 2, 3 }, { 1, 3, 2, 3, 0 }, { 1, 3, 2, 3, 1 },
{ 1, 3, 2, 3, 2 }, { 1, 3, 2, 3, 3 }, { 1, 3, 3, 0, 0 }, { 1, 3, 3, 0, 1 }, { 1, 3, 3, 0, 2 },
{ 1, 3, 3, 0, 3 }, { 1, 3, 3, 1, 0 }, { 1, 3, 3, 1, 1 }, { 1, 3, 3, 1, 2 }, { 1, 3, 3, 1, 3 },
{ 1, 3, 3, 2, 0 }, { 1, 3, 3, 2, 1 }, { 1, 3, 3, 2, 2 }, { 1, 3, 3, 2, 3 }, { 1, 3, 3, 3, 0 },
{ 1, 3, 3, 3, 1 }, { 1, 3, 3, 3, 2 }, { 1, 3, 3, 3, 3 }, { 2, 0, 0, 0, 0 }, { 2, 0, 0, 0, 1 },
{ 2, 0, 0, 0, 2 }, { 2, 0, 0, 0, 3 }, { 2, 0, 0, 1, 0 }, { 2, 0, 0, 1, 1 }, { 2, 0, 0, 1, 2 },
{ 2, 0, 0, 1, 3 }, { 2, 0, 0, 2, 0 }, { 2, 0, 0, 2, 1 }, { 2, 0, 0, 2, 2 }, { 2, 0, 0, 2, 3 },
{ 2, 0, 0, 3, 0 }, { 2, 0, 0, 3, 1 }, { 2, 0, 0, 3, 2 }, { 2, 0, 0, 3, 3 }, { 2, 0, 1, 0, 0 },
{ 2, 0, 1, 0, 1 }, { 2, 0, 1, 0, 2 }, { 2, 0, 1, 0, 3 }, { 2, 0, 1, 1, 0 }, { 2, 0, 1, 1, 1 },
{ 2, 0, 1, 1, 2 }, { 2, 0, 1, 1, 3 }, { 2, 0, 1, 2, 0 }, { 2, 0, 1, 2, 1 }, { 2, 0, 1, 2, 2 },
{ 2, 0, 1, 2, 3 }, { 2, 0, 1, 3, 0 }, { 2, 0, 1, 3, 1 }, { 2, 0, 1, 3, 2 }, { 2, 0, 1, 3, 3 },
{ 2, 0, 2, 0, 0 }, { 2, 0, 2, 0, 1 }, { 2, 0, 2, 0, 2 }, { 2, 0, 2, 0, 3 }, { 2, 0, 2, 1, 0 },
{ 2, 0, 2, 1, 1 }, { 2, 0, 2, 1, 2 }, { 2, 0, 2, 1, 3 }, { 2, 0, 2, 2, 0 }, { 2, 0, 2, 2, 1 },
{ 2, 0, 2, 2, 2 }, { 2, 0, 2, 2, 3 }, { 2, 0, 2, 3, 0 }, { 2, 0, 2, 3, 1 }, { 2, 0, 2, 3, 2 },
{ 2, 0, 2, 3, 3 }, { 2, 0, 3, 0, 0 }, { 2, 0, 3, 0, 1 }, { 2, 0, 3, 0, 2 }, { 2, 0, 3, 0, 3 },
{ 2, 0, 3, 1, 0 }, { 2, 0, 3, 1, 1 }, { 2, 0, 3, 1, 2 }, { 2, 0, 3, 1, 3 }, { 2, 0, 3, 2, 0 },
{ 2, 0, 3, 2, 1 }, { 2, 0, 3, 2, 2 }, { 2, 0, 3, 2, 3 }, { 2, 0, 3, 3, 0 }, { 2, 0, 3, 3, 1 },
{ 2, 0, 3, 3, 2 }, { 2, 0, 3, 3, 3 }, { 2, 1, 0, 0, 0 }, { 2, 1, 0, 0, 1 }, { 2, 1, 0, 0, 2 },
{ 2, 1, 0, 0, 3 }, { 2, 1, 0, 1, 0 }, { 2, 1, 0, 1, 1 }, { 2, 1, 0, 1, 2 }, { 2, 1, 0, 1, 3 },
{ 2, 1, 0, 2, 0 }, { 2, 1, 0, 2, 1 }, { 2, 1, 0, 2, 2 }, { 2, 1, 0, 2, 3 }, { 2, 1, 0, 3, 0 },
{ 2, 1, 0, 3, 1 }, { 2, 1, 0, 3, 2 }, { 2, 1, 0, 3, 3 }, { 2, 1, 1, 0, 0 }, { 2, 1, 1, 0, 1 },
{ 2, 1, 1, 0, 2 }, { 2, 1, 1, 0, 3 }, { 2, 1, 1, 1, 0 }, { 2, 1, 1, 1, 1 }, { 2, 1, 1, 1, 2 },
{ 2, 1, 1, 1, 3 }, { 2, 1, 1, 2, 0 }, { 2, 1, 1, 2, 1 }, { 2, 1, 1, 2, 2 }, { 2, 1, 1, 2, 3 },
{ 2, 1, 1, 3, 0 }, { 2, 1, 1, 3, 1 }, { 2, 1, 1, 3, 2 }, { 2, 1, 1, 3, 3 }, { 2, 1, 2, 0, 0 },
{ 2, 1, 2, 0, 1 }, { 2, 1, 2, 0, 2 }, { 2, 1, 2, 0, 3 }, { 2, 1, 2, 1, 0 }, { 2, 1, 2, 1, 1 },
{ 2, 1, 2, 1, 2 }, { 2, 1, 2, 1, 3 }, { 2, 1, 2, 2, 0 }, { 2, 1, 2, 2, 1 }, { 2, 1, 2, 2, 2 },
{ 2, 1, 2, 2, 3 }, { 2, 1, 2, 3, 0 }, { 2, 1, 2, 3, 1 }, { 2, 1, 2, 3, 2 }, { 2, 1, 2, 3, 3 },
{ 2, 1, 3, 0, 0 }, { 2, 1, 3, 0, 1 }, { 2, 1, 3, 0, 2 }, { 2, 1, 3, 0, 3 }, { 2, 1, 3, 1, 0 },
{ 2, 1, 3, 1, 1 }, { 2, 1, 3, 1, 2 }, { 2, 1, 3, 1, 3 }, { 2, 1, 3, 2, 0 }, { 2, 1, 3, 2, 1 },
{ 2, 1, 3, 2, 2 }, { 2, 1, 3, 2, 3 }, { 2, 1, 3, 3, 0 }, { 2, 1, 3, 3, 1 }, { 2, 1, 3, 3, 2 },
{ 2, 1, 3, 3, 3 }, { 2, 2, 0, 0, 0 }, { 2, 2, 0, 0, 1 }, { 2, 2, 0, 0, 2 }, { 2, 2, 0, 0, 3 },
{ 2, 2, 0, 1, 0 }, { 2, 2, 0, 1, 1 }, { 2, 2, 0, 1, 2 }, { 2, 2, 0, 1, 3 }, { 2, 2, 0, 2, 0 },
{ 2, 2, 0, 2, 1 }, { 2, 2, 0, 2, 2 }, { 2, 2, 0, 2, 3 }, { 2, 2, 0, 3, 0 }, { 2, 2, 0, 3, 1 },
{ 2, 2, 0, 3, 2 }, { 2, 2, 0, 3, 3 }, { 2, 2, 1, 0, 0 }, { 2, 2, 1, 0, 1 }, { 2, 2, 1, 0, 2 },
{ 2, 2, 1, 0, 3 }, { 2, 2, 1, 1, 0 }, { 2, 2, 1, 1, 1 }, { 2, 2, 1, 1, 2 }, { 2, 2, 1, 1, 3 },
{ 2, 2, 1, 2, 0 }, { 2, 2, 1, 2, 1 }, { 2, 2, 1, 2, 2 }, { 2, 2, 1, 2, 3 }, { 2, 2, 1, 3, 0 },
{ 2, 2, 1, 3, 1 }, { 2, 2, 1, 3, 2 }, { 2, 2, 1, 3, 3 }, { 2, 2, 2, 0, 0 }, { 2, 2, 2, 0, 1 },
{ 2, 2, 2, 0, 2 }, { 2, 2, 2, 0, 3 }, { 2, 2, 2, 1, 0 }, { 2, 2, 2, 1, 1 }, { 2, 2, 2, 1, 2 },
{ 2, 2, 2, 1, 3 }, { 2, 2, 2, 2, 0 }, { 2, 2, 2, 2, 1 }, { 2, 2, 2, 2, 2 }, { 2, 2, 2, 2, 3 },
{ 2, 2, 2, 3, 0 }, { 2, 2, 2, 3, 1 }, { 2, 2, 2, 3, 2 }, { 2, 2, 2, 3, 3 }, { 2, 2, 3, 0, 0 },
{ 2, 2, 3, 0, 1 }, { 2, 2, 3, 0, 2 }, { 2, 2, 3, 0, 3 }, { 2, 2, 3, 1, 0 }, { 2, 2, 3, 1, 1 },
{ 2, 2, 3, 1, 2 }, { 2, 2, 3, 1, 3 }, { 2, 2, 3, 2, 0 }, { 2, 2, 3, 2, 1 }, { 2, 2, 3, 2, 2 },
{ 2, 2, 3, 2, 3 }, { 2, 2, 3, 3, 0 }, { 2, 2, 3, 3, 1 }, { 2, 2, 3, 3, 2 }, { 2, 2, 3, 3, 3 },
{ 2, 3, 0, 0, 0 }, { 2, 3, 0, 0, 1 }, { 2, 3, 0, 0, 2 }, { 2, 3, 0, 0, 3 }, { 2, 3, 0, 1, 0 },
{ 2, 3, 0, 1, 1 }, { 2, 3, 0, 1, 2 }, { 2, 3, 0, 1, 3 }, { 2, 3, 0, 2, 0 }, { 2, 3, 0, 2, 1 },
{ 2, 3, 0, 2, 2 }, { 2, 3, 0, 2, 3 }, { 2, 3, 0, 3, 0 }, { 2, 3, 0, 3, 1 }, { 2, 3, 0, 3, 2 },
{ 2, 3, 0, 3, 3 }, { 2, 3, 1, 0, 0 }, { 2, 3, 1, 0, 1 }, { 2, 3, 1, 0, 2 }, { 2, 3, 1, 0, 3 },
{ 2, 3, 1, 1, 0 }, { 2, 3, 1, 1, 1 }, { 2, 3, 1, 1, 2 }, { 2, 3, 1, 1, 3 }, { 2, 3, 1, 2, 0 },
{ 2, 3, 1, 2, 1 }, { 2, 3, 1, 2, 2 }, { 2, 3, 1, 2, 3 }, { 2, 3, 1, 3, 0 }, { 2, 3, 1, 3, 1 },
{ 2, 3, 1, 3, 2 }, { 2, 3, 1, 3, 3 }, { 2, 3, 2, 0, 0 }, { 2, 3, 2, 0, 1 }, { 2, 3, 2, 0, 2 },
{ 2, 3, 2, 0, 3 }, { 2, 3, 2, 1, 0 }, { 2, 3, 2, 1, 1 }, { 2, 3, 2, 1, 2 }, { 2, 3, 2, 1, 3 },
{ 2, 3, 2, 2, 0 }, { 2, 3, 2, 2, 1 }, { 2, 3, 2, 2, 2 }, { 2, 3, 2, 2, 3 }, { 2, 3, 2, 3, 0 },
{ 2, 3, 2, 3, 1 }, { 2, 3, 2, 3, 2 }, { 2, 3, 2, 3, 3 }, { 2, 3, 3, 0, 0 }, { 2, 3, 3, 0, 1 },
{ 2, 3, 3, 0, 2 }, { 2, 3, 3, 0, 3 }, { 2, 3, 3, 1, 0 }, { 2, 3, 3, 1, 1 }, { 2, 3, 3, 1, 2 },
{ 2, 3, 3, 1, 3 }, { 2, 3, 3, 2, 0 }, { 2, 3, 3, 2, 1 }, { 2, 3, 3, 2, 2 }, { 2, 3, 3, 2, 3 },
{ 2, 3, 3, 3, 0 }, { 2, 3, 3, 3, 1 }, { 2, 3, 3, 3, 2 }, { 2, 3, 3, 3, 3 }, { 3, 0, 0, 0, 0 },
{ 3, 0, 0, 0, 1 }, { 3, 0, 0, 0, 2 }, { 3, 0, 0, 0, 3 }, { 3, 0, 0, 1, 0 }, { 3, 0, 0, 1, 1 },
{ 3, 0, 0, 1, 2 }, { 3, 0, 0, 1, 3 }, { 3, 0, 0, 2, 0 }, { 3, 0, 0, 2, 1 }, { 3, 0, 0, 2, 2 },
{ 3, 0, 0, 2, 3 }, { 3, 0, 0, 3, 0 }, { 3, 0, 0, 3, 1 }, { 3, 0, 0, 3, 2 }, { 3, 0, 0, 3, 3 },
{ 3, 0, 1, 0, 0 }, { 3, 0, 1, 0, 1 }, { 3, 0, 1, 0, 2 }, { 3, 0, 1, 0, 3 }, { 3, 0, 1, 1, 0 },
{ 3, 0, 1, 1, 1 }, { 3, 0, 1, 1, 2 }, { 3, 0, 1, 1, 3 }, { 3, 0, 1, 2, 0 }, { 3, 0, 1, 2, 1 },
{ 3, 0, 1, 2, 2 }, { 3, 0, 1, 2, 3 }, { 3, 0, 1, 3, 0 }, { 3, 0, 1, 3, 1 }, { 3, 0, 1, 3, 2 },
{ 3, 0, 1, 3, 3 }, { 3, 0, 2, 0, 0 }, { 3, 0, 2, 0, 1 }, { 3, 0, 2, 0, 2 }, { 3, 0, 2, 0, 3 },
{ 3, 0, 2, 1, 0 }, { 3, 0, 2, 1, 1 }, { 3, 0, 2, 1, 2 }, { 3, 0, 2, 1, 3 }, { 3, 0, 2, 2, 0 },
{ 3, 0, 2, 2, 1 }, { 3, 0, 2, 2, 2 }, { 3, 0, 2, 2, 3 }, { 3, 0, 2, 3, 0 }, { 3, 0, 2, 3, 1 },
{ 3, 0, 2, 3, 2 }, { 3, 0, 2, 3, 3 }, { 3, 0, 3, 0, 0 }, { 3, 0, 3, 0, 1 }, { 3, 0, 3, 0, 2 },
{ 3, 0, 3, 0, 3 }, { 3, 0, 3, 1, 0 }, { 3, 0, 3, 1, 1 }, { 3, 0, 3, 1, 2 }, { 3, 0, 3, 1, 3 },
{ 3, 0, 3, 2, 0 }, { 3, 0, 3, 2, 1 }, { 3, 0, 3, 2, 2 }, { 3, 0, 3, 2, 3 }, { 3, 0, 3, 3, 0 },
{ 3, 0, 3, 3, 1 }, { 3, 0, 3, 3, 2 }, { 3, 0, 3, 3, 3 }, { 3, 1, 0, 0, 0 }, { 3, 1, 0, 0, 1 },
{ 3, 1, 0, 0, 2 }, { 3, 1, 0, 0, 3 }, { 3, 1, 0, 1, 0 }, { 3, 1, 0, 1, 1 }, { 3, 1, 0, 1, 2 },
{ 3, 1, 0, 1, 3 }, { 3, 1, 0, 2, 0 }, { 3, 1, 0, 2, 1 }, { 3, 1, 0, 2, 2 }, { 3, 1, 0, 2, 3 },
{ 3, 1, 0, 3, 0 }, { 3, 1, 0, 3, 1 }, { 3, 1, 0, 3, 2 }, { 3, 1, 0, 3, 3 }, { 3, 1, 1, 0, 0 },
{ 3, 1, 1, 0, 1 }, { 3, 1, 1, 0, 2 }, { 3, 1, 1, 0, 3 }, { 3, 1, 1, 1, 0 }, { 3, 1, 1, 1, 1 },
{ 3, 1, 1, 1, 2 }, { 3, 1, 1, 1, 3 }, { 3, 1, 1, 2, 0 }, { 3, 1, 1, 2, 1 }, { 3, 1, 1, 2, 2 },
{ 3, 1, 1, 2, 3 }, { 3, 1, 1, 3, 0 }, { 3, 1, 1, 3, 1 }, { 3, 1, 1, 3, 2 }, { 3, 1, 1, 3, 3 },
{ 3, 1, 2, 0, 0 }, { 3, 1, 2, 0, 1 }, { 3, 1, 2, 0, 2 }, { 3, 1, 2, 0, 3 }, { 3, 1, 2, 1, 0 },
{ 3, 1, 2, 1, 1 }, { 3, 1, 2, 1, 2 }, { 3, 1, 2, 1, 3 }, { 3, 1, 2, 2, 0 }, { 3, 1, 2, 2, 1 },
{ 3, 1, 2, 2, 2 }, { 3, 1, 2, 2, 3 }, { 3, 1, 2, 3, 0 }, { 3, 1, 2, 3, 1 }, { 3, 1, 2, 3, 2 },
{ 3, 1, 2, 3, 3 }, { 3, 1, 3, 0, 0 }, { 3, 1, 3, 0, 1 }, { 3, 1, 3, 0, 2 }, { 3, 1, 3, 0, 3 },
{ 3, 1, 3, 1, 0 }, { 3, 1, 3, 1, 1 }, { 3, 1, 3, 1, 2 }, { 3, 1, 3, 1, 3 }, { 3, 1, 3, 2, 0 },
{ 3, 1, 3, 2, 1 }, { 3, 1, 3, 2, 2 }, { 3, 1, 3, 2, 3 }, { 3, 1, 3, 3, 0 }, { 3, 1, 3, 3, 1 },
{ 3, 1, 3, 3, 2 }, { 3, 1, 3, 3, 3 }, { 3, 2, 0, 0, 0 }, { 3, 2, 0, 0, 1 }, { 3, 2, 0, 0, 2 },
{ 3, 2, 0, 0, 3 }, { 3, 2, 0, 1, 0 }, { 3, 2, 0, 1, 1 }, { 3, 2, 0, 1, 2 }, { 3, 2, 0, 1, 3 },
{ 3, 2, 0, 2, 0 }, { 3, 2, 0, 2, 1 }, { 3, 2, 0, 2, 2 }, { 3, 2, 0, 2, 3 }, { 3, 2, 0, 3, 0 },
{ 3, 2, 0, 3, 1 }, { 3, 2, 0, 3, 2 }, { 3, 2, 0, 3, 3 }, { 3, 2, 1, 0, 0 }, { 3, 2, 1, 0, 1 },
{ 3, 2, 1, 0, 2 }, { 3, 2, 1, 0, 3 }, { 3, 2, 1, 1, 0 }, { 3, 2, 1, 1, 1 }, { 3, 2, 1, 1, 2 },
{ 3, 2, 1, 1, 3 }, { 3, 2, 1, 2, 0 }, { 3, 2, 1, 2, 1 }, { 3, 2, 1, 2, 2 }, { 3, 2, 1, 2, 3 },
{ 3, 2, 1, 3, 0 }, { 3, 2, 1, 3, 1 }, { 3, 2, 1, 3, 2 }, { 3, 2, 1, 3, 3 }, { 3, 2, 2, 0, 0 },
{ 3, 2, 2, 0, 1 }, { 3, 2, 2, 0, 2 }, { 3, 2, 2, 0, 3 }, { 3, 2, 2, 1, 0 }, { 3, 2, 2, 1, 1 },
{ 3, 2, 2, 1, 2 }, { 3, 2, 2, 1, 3 }, { 3, 2, 2, 2, 0 }, { 3, 2, 2, 2, 1 }, { 3, 2, 2, 2, 2 },
{ 3, 2, 2, 2, 3 }, { 3, 2, 2, 3, 0 }, { 3, 2, 2, 3, 1 }, { 3, 2, 2, 3, 2 }, { 3, 2, 2, 3, 3 },
{ 3, 2, 3, 0, 0 }, { 3, 2, 3, 0, 1 }, { 3, 2, 3, 0, 2 }, { 3, 2, 3, 0, 3 }, { 3, 2, 3, 1, 0 },
{ 3, 2, 3, 1, 1 }, { 3, 2, 3, 1, 2 }, { 3, 2, 3, 1, 3 }, { 3, 2, 3, 2, 0 }, { 3, 2, 3, 2, 1 },
{ 3, 2, 3, 2, 2 }, { 3, 2, 3, 2, 3 }, { 3, 2, 3, 3, 0 }, { 3, 2, 3, 3, 1 }, { 3, 2, 3, 3, 2 },
{ 3, 2, 3, 3, 3 }, { 3, 3, 0, 0, 0 }, { 3, 3, 0, 0, 1 }, { 3, 3, 0, 0, 2 }, { 3, 3, 0, 0, 3 },
{ 3, 3, 0, 1, 0 }, { 3, 3, 0, 1, 1 }, { 3, 3, 0, 1, 2 }, { 3, 3, 0, 1, 3 }, { 3, 3, 0, 2, 0 },
{ 3, 3, 0, 2, 1 }, { 3, 3, 0, 2, 2 }, { 3, 3, 0, 2, 3 }, { 3, 3, 0, 3, 0 }, { 3, 3, 0, 3, 1 },
{ 3, 3, 0, 3, 2 }, { 3, 3, 0, 3, 3 }, { 3, 3, 1, 0, 0 }, { 3, 3, 1, 0, 1 }, { 3, 3, 1, 0, 2 },
{ 3, 3, 1, 0, 3 }, { 3, 3, 1, 1, 0 }, { 3, 3, 1, 1, 1 }, { 3, 3, 1, 1, 2 }, { 3, 3, 1, 1, 3 },
{ 3, 3, 1, 2, 0 }, { 3, 3, 1, 2, 1 }, { 3, 3, 1, 2, 2 }, { 3, 3, 1, 2, 3 }, { 3, 3, 1, 3, 0 },
{ 3, 3, 1, 3, 1 }, { 3, 3, 1, 3, 2 }, { 3, 3, 1, 3, 3 }, { 3, 3, 2, 0, 0 }, { 3, 3, 2, 0, 1 },
{ 3, 3, 2, 0, 2 }, { 3, 3, 2, 0, 3 }, { 3, 3, 2, 1, 0 }, { 3, 3, 2, 1, 1 }, { 3, 3, 2, 1, 2 },
{ 3, 3, 2, 1, 3 }, { 3, 3, 2, 2, 0 }, { 3, 3, 2, 2, 1 }, { 3, 3, 2, 2, 2 }, { 3, 3, 2, 2, 3 },
{ 3, 3, 2, 3, 0 }, { 3, 3, 2, 3, 1 }, { 3, 3, 2, 3, 2 }, { 3, 3, 2, 3, 3 }, { 3, 3, 3, 0, 0 },
{ 3, 3, 3, 0, 1 }, { 3, 3, 3, 0, 2 }, { 3, 3, 3, 0, 3 }, { 3, 3, 3, 1, 0 }, { 3, 3, 3, 1, 1 },
{ 3, 3, 3, 1, 2 }, { 3, 3, 3, 1, 3 }, { 3, 3, 3, 2, 0 }, { 3, 3, 3, 2, 1 }, { 3, 3, 3, 2, 2 },
{ 3, 3, 3, 2, 3 }, { 3, 3, 3, 3, 0 }, { 3, 3, 3, 3, 1 }, { 3, 3, 3, 3, 2 }, { 3, 3, 3, 3, 3 } };
// 0 : 오른쪽, 1 : 왼쪽, 2 : 위쪽 3 : 아래쪽
for (int i = 0; i < arr2.length; i++) {
// arr 카피
int[][] temp = new int[N][N];
for (int j = 0; j < N; j++) {
temp[j] = arr[j].clone();
}
// 상하좌우 체크
for (int j = 0; j < 5; j++) {
int dir = arr2[i][j];
switch (dir) {
case 0:
up(temp);
break;
case 1:
down(temp);
break;
case 2:
left(temp);
break;
case 3:
right(temp);
break;
}
int val = 0;
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
val = Math.max(val, temp[r][c]);
}
}
answer = Math.max(val, answer);
}
}
System.out.println(answer);
}
public static void perm(int cnt) {
// 기저조건
if (cnt == 5) {
System.out.print("{");
for (int i = 0; i < 4; i++) {
System.out.print(numbers[i] + ",");
}
System.out.print(numbers[4]);
System.out.print("},");
return;
}
for (int i = 0; i < 4; i++) {
numbers[cnt] = i;
perm(cnt + 1);
}
}
public static void up(int[][] map) {
boolean[][] visited = new boolean[N][N];
for (int j = 0; j < N; j++) {
while (true) {
int cnt = 0;
int x = 0;
int nx = x + dx[1];
while (true) {
if (nx >= N)
break;
if (map[nx][j] != 0 && !visited[x][j] && !visited[nx][j] && map[nx][j] == map[x][j]) {
map[x][j] += map[nx][j];
visited[x][j] = true;
map[nx][j] = 0;
cnt++;
} else if (map[x][j] == 0 && map[nx][j] != 0) {
map[x][j] = map[nx][j];
map[nx][j] = 0;
visited[x][j] = visited[nx][j];
visited[nx][j] = false;
cnt++;
}
x = nx;
nx += dx[1];
}
if (cnt == 0) {
break;
}
}
}
}
public static void down(int[][] map) {
boolean[][] visited = new boolean[N][N];
for (int j = 0; j < N; j++) {
while (true) {
int cnt = 0;
int x = N - 1;
int nx = x + dx[0];
while (true) {
if (nx < 0)
break;
if (map[nx][j] != 0 && !visited[x][j] && !visited[nx][j] && map[nx][j] == map[x][j]) {
map[x][j] += map[nx][j];
visited[x][j] = true;
map[nx][j] = 0;
cnt++;
} else if (map[x][j] == 0 && map[nx][j] != 0) {
map[x][j] = map[nx][j];
map[nx][j] = 0;
visited[x][j] = visited[nx][j];
visited[nx][j] = false;
cnt++;
}
x = nx;
nx += dx[0];
}
if (cnt == 0) {
break;
}
}
}
}
public static void left(int[][] map) {
boolean[][] visited = new boolean[N][N];
for (int i = 0; i < N; i++) {
while (true) {
int cnt = 0;
int y = 0;
int ny = y + dy[3];
while (true) {
if (ny >= N)
break;
if (map[i][ny] != 0 && !visited[i][y] && !visited[i][ny] && map[i][y] == map[i][ny]) {
map[i][y] += map[i][ny];
visited[i][y] = true;
map[i][ny] = 0;
cnt++;
} else if (map[i][y] == 0 && map[i][ny] != 0) {
map[i][y] = map[i][ny];
map[i][ny] = 0;
visited[i][y] = visited[i][ny];
visited[i][ny] = false;
cnt++;
}
y = ny;
ny += dy[3];
}
if (cnt == 0) {
break;
}
}
}
}
public static void right(int[][] map) {
boolean[][] visited = new boolean[N][N];
for (int i = 0; i < N; i++) {
while (true) {
int cnt = 0;
int y = N - 1;
int ny = y + dy[2];
while (true) {
if (ny < 0)
break;
if (map[i][ny] != 0 && !visited[i][y] && !visited[i][ny] && map[i][y] == map[i][ny]) {
map[i][y] += map[i][ny];
visited[i][y] = true;
map[i][ny] = 0;
cnt++;
} else if (map[i][y] == 0 && map[i][ny] != 0) {
map[i][y] = map[i][ny];
map[i][ny] = 0;
visited[i][y] = visited[i][ny];
visited[i][ny] = false;
cnt++;
}
y = ny;
ny += dy[2];
}
if (cnt == 0) {
break;
}
}
}
}
}