반응형
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Location{
int x;
int y;
public Location(int x, int y) {
// TODO Auto-generated constructor stub
this.x = x;
this.y = y;
}
}
public class Main {
static int n;
static int m;
static int[][] board;
static int[] dice = {0,0,0,0,0,0};
static int k;
static int[] move;
static Queue<Location> q;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
board = new int[n][m];
q = new LinkedList<>();
int x = sc.nextInt();
int y = sc.nextInt();
q.offer(new Location(x, y));
k = sc.nextInt(); //명령어 개수
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
board[i][j] = sc.nextInt();
}
}
move = new int[k];
for(int i=0;i<k;i++){
move[i] = sc.nextInt();
}
moveDice();
}
public static void moveDice(){
int[] xx = {0,0,0,-1,1};
int[] yy = {0,1,-1,0,0};
for(int i=0;i<k;i++){
int x = q.peek().x;
int y = q.poll().y;
int ax = x+xx[move[i]];
int ay = y+yy[move[i]];
if(ax>=0 && ay>=0 && ax<n && ay<m){
rollDice(move[i]);
if(board[ax][ay] == 0){
board[ax][ay] = dice[5];
}else{
dice[5] = board[ax][ay];
board[ax][ay] = 0;
}
q.offer(new Location(ax, ay));
}else{
q.offer(new Location(x, y));
continue;
}
System.out.println(dice[0]);
}
}
public static void rollDice(int dir){
// 1 : 왼 // 2 : 우 // 3 : 위 // 4 : 아래
int temp=0;
if(dir == 2){
temp = dice[0];
dice[0] = dice[2];
dice[2] = dice[5];
dice[5] = dice[3];
dice[3] = temp;
}else if(dir == 1){
temp = dice[0];
dice[0] = dice[3];
dice[3] = dice[5];
dice[5] = dice[2];
dice[2] = temp;
}else if(dir == 3){
temp = dice[0];
dice[0] = dice[4];
dice[4] = dice[5];
dice[5] = dice[1];
dice[1] = temp;
}else if(dir == 4){
temp = dice[0];
dice[0] = dice[1];
dice[1] = dice[5];
dice[5] = dice[4];
dice[4] = temp;
}
}
}
반응형
'알고리즘 > Baekjoon' 카테고리의 다른 글
[Baekjoon] #13458 시험 감독 (0) | 2022.06.22 |
---|---|
[Baekjoon] #13460 구슬 탈출 2 (0) | 2022.06.22 |
[Baekjoon] #15649 N과 M (1) (0) | 2022.06.22 |
[Baekjoon] #15650 N과 M (2) (0) | 2022.06.22 |
[Baekjoon] #17086 아기 상어2 (0) | 2022.06.22 |