int left = 10;
int right = 12;
이부분을 설정하지 않으면 테케 8번 15번이 틀린다
10번은 * 12번은 # 를 의미 한다.
/**
* target 과 현재 손의 거리 구하기
* @param current 손 위치
* @param target 목표 숫자
* @return
*/
public static int getLength(int current, int target) {
current = (current == 0) ? 11 : current;
target = (target == 0) ? 11 : target;
int x = (current - 1) / 3;
int y = (current - 1) % 3;
int targetX = target / 3;
int targetY = 1;
return Math.abs(x - targetX) + Math.abs(y - targetY);
}
번호가 0번인 경우는 11번으로 설정한후 상대 위치 (x,y)로 변환 하는 방법을 구한다.
x축은 3으로 나눈 몫에 해당하는 위치, y축은 3으로 나눈 나머지 에 해당한다 y축에 해당하는 targetY는 1로 동일하다 왜냐하면 이부분은 2,5,8,0만 들어올 것이기 때문에 고정으로 들어올 것이라 연산을 따로 할 필요가 없다
해당 아이디어는 이 블로그를 참고하였다