=====>아 준니......어디가 틀렸는지 완전맞는 코드인데 어디가 틀린거야 준니 몇시간 고민했는데 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]); } } } } }


+ Recent posts