=====>아 준니......어디가 틀렸는지 완전맞는 코드인데 어디가 틀린거야 준니 몇시간 고민했는데 x가 세로고 y가 가로였다...
당연히 x가 가로인줄 알았따... 모든게 내탓이지뭐 ㅠㅠ 입력부분에 ..... 나와있었네; 문제꼼꼼히읽자 ㅂㄷㅂㄷ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException{
int dic[][]=new int [4][3];
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token=new StringTokenizer(reader.readLine());
int n=Integer.parseInt(token.nextToken());//세로
int m=Integer.parseInt(token.nextToken());//가로
int x=Integer.parseInt(token.nextToken());//x좌표
int y=Integer.parseInt(token.nextToken());//y좌표
int cmd_n=Integer.parseInt(token.nextToken());//명령수
int map[][]=new int[n][m];
for(int i=0;i<n;i++){
token=new StringTokenizer(reader.readLine());
for(int j=0;j<m;j++){
map[i][j]=Integer.parseInt(token.nextToken());
}
}
int cmd[]=new int[cmd_n];
token=new StringTokenizer(reader.readLine());
int nn=token.countTokens();
for(int i=0;i<nn;i++){
cmd[i]=Integer.parseInt(token.nextToken());
}
//map[y][x]=0;
for(int i=0;i<cmd.length;i++){
if(cmd[i]==1){ //동
if( 0<=y+1 && y+1<m){
int temp[][]=new int[4][3];
temp[1][0]=dic[1][0];
temp[1][1]=dic[1][1];
temp[1][2]=dic[1][2];
temp[3][1]=dic[3][1];
dic[1][1]=temp[1][0];
dic[1][2]=temp[1][1];
dic[3][1]=temp[1][2];
dic[1][0]=temp[3][1];
y++;
if(map[x][y]==0){
map[x][y]=dic[3][1];
}else{
dic[3][1]=map[x][y];
map[x][y]=0;
}
System.out.println(dic[1][1]);
}
}else if(cmd[i]==2){ //서
if (0<=y-1 && y-1<m){
int temp[][]=new int[4][3];
temp[1][0]=dic[1][0];
temp[1][1]=dic[1][1];
temp[1][2]=dic[1][2];
temp[3][1]=dic[3][1];
dic[1][0]=temp[1][1];
dic[3][1]=temp[1][0];
dic[1][2]=temp[3][1];
dic[1][1]=temp[1][2];
y--;
if(map[x][y]==0){
map[x][y]=dic[3][1];
//map이 0이면 주사위의 바닥면의 값이 복사 된다.
}else{
dic[3][1]=map[x][y];
map[x][y]=0;
}
System.out.println(dic[1][1]);
}
}else if(cmd[i]==3){//북
if(0<=x-1 && x-1<n){
int temp[][]=new int[4][3];
temp[0][1]=dic[0][1];
temp[1][1]=dic[1][1];
temp[2][1]=dic[2][1];
temp[3][1]=dic[3][1];
dic[0][1]=temp[1][1];
dic[1][1]=temp[2][1];
dic[2][1]=temp[3][1];
dic[3][1]=temp[0][1];
x--;
if(map[x][y]==0){
map[x][y]=dic[3][1];
//map이 0이면 주사위의 바닥면의 값이 복사 된다.
}else{
dic[3][1]=map[x][y];
map[x][y]=0;
}
System.out.println(dic[1][1]);
}
}else if(cmd[i]==4){//남
if(0<=x+1 && x+1<n){
int temp[][]=new int[4][3];
temp[0][1]=dic[0][1];
temp[1][1]=dic[1][1];
temp[2][1]=dic[2][1];
temp[3][1]=dic[3][1];
dic[1][1]=temp[0][1];
dic[2][1]=temp[1][1];
dic[3][1]=temp[2][1];
dic[0][1]=temp[3][1];
x++;
if(map[x][y]==0){
map[x][y]=dic[3][1];
//map이 0이면 주사위의 바닥면의 값이 복사 된다.
}else{
dic[3][1]=map[x][y];
map[x][y]=0;
}
System.out.println(dic[1][1]);
}
}
}
}
}
'코딩문제' 카테고리의 다른 글
[백준알고리즘] 째로탈출2 (DFS)(백트래킹) (0) | 2018.03.23 |
---|---|
[백준알고리즘] 2048 (BFS) (0) | 2018.03.23 |
[백준알고리즘] 숨바꼭질 (BFS) (0) | 2018.03.23 |
[백준알고리즘]1987 알파벳 (DFS) (0) | 2018.03.23 |
[백준알고리즘] 유기농 배추 (DFS) (0) | 2018.03.23 |