왔던 경로에 대한 저장이 어려운 문제였다.
고민하다가 참고하였는데 String 으로 좌표를 만들어서 HashSet 으로 해결하였다
import java.util.*;
class Solution {
public int solution(String dirs) {
int answer = bfs(5, 5, dirs);
return answer;
}
public int bfs(int sx, int sy, String dirs)
{
HashSet<String> set = new HashSet<>();
int answer = 0;
int[] start = new int[2];
start[0] = sx;
start[1] = sy;
boolean[][] visit = new boolean[11][11];
visit[sx][sy] = true;
int cx = sx;
int cy = sy;
for(int i = 0; i < dirs.length(); ++i)
{
int nx = 0;
int ny = 0;
if(dirs.charAt(i)=='U')
{
nx = cx;
ny = cy+1;
}
else if(dirs.charAt(i)=='R')
{
nx = cx+1;
ny = cy;
}
else if(dirs.charAt(i)=='D')
{
nx = cx;
ny = cy-1;
}
else if(dirs.charAt(i)=='L')
{
nx = cx-1;
ny = cy;
}
if(nx < 0 || nx > 10 || ny < 0 || ny > 10)
continue;
String edge1 = cx+","+cy+","+nx+","+ny;
String edge2 = nx+","+ny+","+cx+","+cy;
if(set.contains(edge1) || set.contains(edge2))
{
}
else
{
answer++;
}
//System.out.println(nx + "," + ny);
set.add(edge1);
set.add(edge2);
cx = nx;
cy = ny;
}
return answer;
}
}