728x90
반응형
[CodeUp] 1099 : 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
입력: 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다.
출력: 성실한 개미가 이동한 경로를 9로 표시해 출력한다.
-> 해결과정
1) 2차원 배열 선언 후 입력값으로 초기화
2) 개미가 (2,2)에서 시작함으로 x,y좌표를 1로 초기화한다.(배열의 index는 0부터 시작)
3) 해당좌표가 2(도착점)이 아니고 x,y모두 9(벽에 부딪히게 됌)가 넘지않을 때 오른쪽으로 이동가능하면 y값을 1추가하여 오른쪽으로 이동시키고 불가능할때 아래로 이동하도록 한다.
4) 이동하려는 좌표가 2일 경우, 이동시킨 후 while문을 빠져나오도록 break문을 넣어준다.
5) 도착점의 좌표에 해당하는 값을 9로 변경한다.
*주의: 이동하려는 좌표가 2일 경우(4번)의 경우를 놓쳐 조금의 삽질을 통해 발견..
코드
import java.util.Scanner;
import java.io.*;
class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int arr[][]=new int[11][11];
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
arr[i][j]=scan.nextInt();
}
}
int x=1;
int y=1;
while(arr[x][y]!=2 && x<9 && y<9) {
arr[x][y]=9;
if(arr[x][y+1]==0) {
y++;
}else if(arr[x][y+1]==1) {
if(arr[x+1][y]==0) {
x++;
}else if(arr[x+1][y]==1) {
break;
}else if(arr[x+1][y]==2){
x++;
break;
}
}else if(arr[x][y+1]==2){
y++;
break;
}
}
if(arr[x][y]==2) {
arr[x][y]=9;
}
for(int m=0;m<10;m++) {
for(int n=0;n<10;n++) {
System.out.printf("%d ", arr[m][n]);
}
System.out.printf("\n");
}
}
}
728x90
반응형
'알고리즘 > Array(1, 2차원 배열)' 카테고리의 다른 글
[CodeUp] 1097 : [기초-2차원배열] 바둑알 십자 뒤집기(java) (0) | 2020.11.24 |
---|