관리 메뉴

NineTwo meet you

[CodeUp/자바] 1099 : [기초-2차원배열] 성실한 개미 본문

프로그래밍 문제/CodeUp

[CodeUp/자바] 1099 : [기초-2차원배열] 성실한 개미

NineTwo 2020. 12. 21. 19:03
반응형

출처


설명

0 => 갈 수 있는 곳

1 => 벽 또는 장애물

2 => 먹이, 도착지

 

현재 자리가 2라면 목적지에 도착했기 때문에 그 자리를 9로 변환하고 while문을 탈출한다.

현재 자리가 2가 아니라면 그자리를 9로 변환하고 움직일 수 있는 방향을 살펴본다.

먼저 오른쪽이 0이나 2라면 막혀있지 않으므로 이동한다.

만약 오른쪽이 1로 벽이라면 아래쪽을 살펴본다.

아래쪽이 0이나 2라면 막혀있지 않으므로 이동한다.

아래쪽이 1이라면 박혀있기 때문에 더 이상 이동하지 않고 while문을 탈출한다.

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class CodeUp1099 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int board[][] = new int[10][10];
int x = 1;
int y = 1;
for(int i = 0; i < 10; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j = 0; j < 10; j++) {
board[i][j] = Integer.parseInt(st.nextToken());
}
}
while(true) {
if(board[x][y] == 2) {
board[x][y] = 9;
break;
}
board[x][y] = 9;
if(board[x][y+1] == 0 || board[x][y+1] == 2) {
y++;
continue;
}else if(board[x][y+1] == 1){
if(board[x+1][y] == 0 || board[x+1][y] == 2) {
x++;
continue;
}else if(board[x+1][y] == 1){
break;
}
}
}
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
bw.write(board[i][j]+" ");
}
bw.write("\n");
}
bw.flush();
bw.close();
br.close();
}
}
view raw CodeUp1099.java hosted with ❤ by GitHub
반응형
Comments