class Solution {
public int solution(String dirs) {
int answer = 0;
char[][] map = new char[11][11];
boolean[][][][] visit = new boolean[11][11][11][11];
int x = 5, y = 5;
for (int i = 0; i < dirs.length(); i++) {
int nx=x;
int ny=y;
if (x - 1 >= 0 && dirs.charAt(i) == 'U')
nx--;
else if (x + 1 <= 10 && dirs.charAt(i) == 'D')
nx++;
else if (y - 1 >= 0 && dirs.charAt(i) == 'L')
ny--;
else if (y + 1 <= 10 && dirs.charAt(i) == 'R')
ny++;
if(visit[nx][ny][x][y]==true || visit[x][y][nx][ny]==true) {
x=nx;y=ny;continue;
}
if(x==nx && y==ny)continue;
visit[nx][ny][x][y]=true;
visit[x][y][nx][ny]=true;
x=nx;y=ny;answer++;
}
return answer;
}
}
이 문제에세 까다롭던 부분이 그저 좌표 방문 여부만 체크하면 된다고 생각했는데
좌표1 -> 좌표2 이것을 저장했어야 했다.
어떤식으로 저장할지 생각을 못했다 =ㅠ
boolean[][][][] visit = new boolean[11][11][11][11];
다른분이 사용한 방법으로 문제를 풀었다.