Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 13901] 로봇 본문
반응형
문제에서 요구하는대로 로봇을 움직여주면 된다.
필자는 DFS로 풀었다.
흠.. 그냥 DFS문제라서 추가적으로 언급할 얘기는 없다;;
public class Main {
static int r;
static int c;
static int a[][];
static int d[] = new int[4];
static int lx;
static int ly;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
a = new int[r][c];
int k = Integer.parseInt(br.readLine());
while(k-->0) {
st = new StringTokenizer(br.readLine());
int bx = Integer.parseInt(st.nextToken());
int by = Integer.parseInt(st.nextToken());
a[bx][by] = 2;
}
st = new StringTokenizer(br.readLine());
lx = Integer.parseInt(st.nextToken());
ly = Integer.parseInt(st.nextToken());
a[lx][ly] = 1;
st = new StringTokenizer(br.readLine());
for(int i=0; i<4; i++)
d[i] = Integer.parseInt(st.nextToken());
dfs(0, 0);
System.out.println(lx + " " + ly);
}
public static void dfs(int idx, int cnt) {
if(cnt == 4) {
return;
}
int x = lx;
int y = ly;
if(d[idx] == 1) x -= 1;
if(d[idx] == 2) x += 1;
if(d[idx] == 3) y -= 1;
if(d[idx] == 4) y += 1;
if(0 <= x && x < r && 0 <= y && y < c) {
if(a[x][y] == 0) {
lx = x;
ly = y;
a[x][y] = 1;
dfs(idx, 0);
return;
}
}
idx = idx + 1 == 4 ? 0 : idx + 1;
dfs(idx, cnt+1);
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 16510] Predictable Queue (0) | 2019.07.02 |
---|---|
[백준 10162] 전자레인지 (0) | 2019.07.02 |
[백준 16505] 별 (0) | 2019.07.02 |
[백준 10158] 개미 (0) | 2019.07.02 |
[백준 2589] 보물섬 (0) | 2019.07.02 |
Comments