https://www.acmicpc.net/problem/14499
import java.io.*;
import java.util.*;
public class Main {
static int N,M,a,b;
static int[][] map;
static int[] dx = {0,0,0,-1,1};
static int[] dy = {0,1,-1,0,0};
static int[] dice = new int[6];
static void move(int x, int y, int d){
int nx = x+dx[d];
int ny = y+dy[d];
if(!isIn(nx,ny)) return;
int num = map[nx][ny];
int[] tmp = new int[6];
for(int i=0;i<6;i++){
tmp[i] = dice[i];
}
switch(d){
case 1:
dice[0] = tmp[3]; dice[2] = tmp[0]; dice[3] = tmp[5]; dice[5] = tmp[2];
break;
case 2:
dice[0] = tmp[2]; dice[2] = tmp[5]; dice[3] = tmp[0]; dice[5] = tmp[3];
break;
case 3:
dice[0] = tmp[4]; dice[1] = tmp[0]; dice[4] = tmp[5]; dice[5] = tmp[1];
break;
case 4:
dice[0] = tmp[1]; dice[1] = tmp[5]; dice[4] = tmp[0]; dice[5] = tmp[4];
break;
}
if(num==0){
map[nx][ny] = dice[5];
}
else{
dice[5] = map[nx][ny];
map[nx][ny] = 0;
}
a = nx;
b = ny;
System.out.println(dice[0]);
}
static boolean isIn(int x, int y){
if(x<0||x>=N||y<0||y>=M) return false;
return true;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
map = new int[N][M];
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
for(int j=0;j<M;j++){
map[i][j] = Integer.parseInt(st.nextToken());
}
}
st = new StringTokenizer(br.readLine());
for(int i=0;i<K;i++){
int d = Integer.parseInt(st.nextToken());
move(a,b,d);
}
}
}
index | 0 | 1 | 2 | 3 | 4 | 5 |
기존 | 1 | 2 | 3 | 4 | 5 | 6 |
동(1) | 4 | 2 | 1 | 6 | 5 | 3 |
서(2) | 3 | 2 | 6 | 1 | 5 | 4 |
북(3) | 5 | 1 | 3 | 4 | 6 | 2 |
남(4) | 2 | 6 | 3 | 4 | 1 | 5 |
주어진 전개도를 가지고 동, 서, 북, 남으로 굴렸을 때 주사위 배열 값이 어떻게 변하는지를 찾아냈다.
문제를 잘못읽어서 남(3), 북(4) 로 잘못 풀었었다. 문제를 잘 읽도록 하자 !
주사위 굴러가는 부분만 잘 구현한다면 어렵지 않게 풀 수 있는 문제였다.
문제를 푼 뒤 배열 복사에 대해 공부하였다. https://tech-heng.tistory.com/67
'알고리즘' 카테고리의 다른 글
[BOJ] 6603번: 로또 (JAVA) (0) | 2023.02.20 |
---|---|
[PGS] 프로그래머스 - 소수찾기 (JAVA) (0) | 2023.02.16 |
[BOJ] 22233번 : 가희와 키워드 (JAVA) (0) | 2023.02.04 |
[BOJ] 15663번 : N과 M (9) (JAVA) (0) | 2023.02.03 |
[Softeer] 장애물 인식 프로그램 (JAVA) (0) | 2023.02.02 |