๋ฌธ์
์ฝ๋ํธ๋ฆฌ | ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ์
๊ตญ๊ฐ๋ํ๊ฐ ๋ง๋ ์ฝ๋ฉ ๊ณต๋ถ์ ๊ฐ์ด๋๋ถ ์ฝ๋ฉ ์์ด๋ณด๋ถํฐ ๊ฟ์ ์ง์ฅ ์ฝํ ํฉ๊ฒฉ๊น์ง, ๊ตญ๊ฐ๋ํ๊ฐ ์์ ํ ์ปค๋ฆฌํ๋ผ์ผ๋ก ์ค๋นํด๋ณด์ธ์.
www.codetree.ai
ํ์ด
- ํด๋น ํ์ด์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ์ ์ก๋ฉด์ฒด์ ๋ํ ๊ธฐ์ค์ ์ ํ๋ ๊ฒ.
- ์ ์ก๋ฉด์ฒด์๋ ์ด 6๊ฐ์ ๋ฉด์ด ์กด์ฌํ๋๋ฐ ํด๋น ๋ฉด๋ค์ ๋๋ฒ๋ง์ ํด์ฃผ๋ ๋ถ๋ถ์ด ๊ฐ์ธ์ ์ผ๋ก ์๊ฐ์ ์๊ตฌํ์...
- ์งํํ๋ค๋ณด๋ ๊ทธ๋ฅ 4๊ฐ์ง ์ด๋ํ๋ ๊ฒฝ์ฐ์ ๋ํด์ ๋ฉด๋ค์ ์์น๋ง์ ๋ฐ๊ฟ์ฃผ๋ rotateCube(int dir) ๋ฉ์๋๋ฅผ ๊ตฌํํด ํด๊ฒฐํ ์ ์์์
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Pair {
int x;
int y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
public class Main {
static int N, M, K;
static Pair cubePos;
static int[] cube;
static int[][] dxy = {{0,1},{0,-1},{-1,0},{1,0}}; // ๋ / ์ / ๋ถ / ๋จ ์
static int[][] board;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
cubePos = new Pair(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));
K = Integer.parseInt(st.nextToken());
board = new int[N][M];
cube = new int[6];
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0; j < M; j++) {
board[i][j] = Integer.parseInt(st.nextToken());
}
}
st = new StringTokenizer(br.readLine());
for(int k = 0; k < K; k++) {
int dir = Integer.parseInt(st.nextToken()) - 1;
int nx = cubePos.x + dxy[dir][0];
int ny = cubePos.y + dxy[dir][1];
if(nx < 0 || ny < 0 || nx >= N || ny >= M) continue;
rotateCube(dir);
if(board[nx][ny] == 0) {
board[nx][ny] = cube[5];
}
else if(board[nx][ny] != 0) {
cube[5] = board[nx][ny];
board[nx][ny] = 0;
}
cubePos.x = nx;
cubePos.y = ny;
System.out.println(cube[0]);
}
}
static void rotateCube(int dir) {
if(dir == 0) {
cube = new int[]{cube[4], cube[1], cube[0], cube[3], cube[5], cube[2]};
}
else if(dir == 1) {
cube = new int[]{cube[2], cube[1], cube[5], cube[3], cube[0], cube[4]};
}
else if(dir == 2) {
cube = new int[]{cube[1], cube[5], cube[2], cube[0], cube[4], cube[3]};
}
else if(dir == 3) {
cube = new int[]{cube[3], cube[0], cube[2], cube[5], cube[4], cube[1]};
}
}
}
- rotateCube ๋ฉ์๋์์๋ ๋ฌธ์ ์์ ์ ์๋๋๋ก ๋(0), ์(1), ๋ถ(2), ๋จ(3) ์ ๋ฐฉํฅ์ผ๋ก ํ๋ธ๋ฅผ ๋๋ฆด ๋ ํ์ฌ์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ ๋ค์ ๋ฉด๋ค์ ์์๋ ์ด๋ป๊ฒ ๋๋์ง์ ๋ํ ๊ณผ์ ์ ํฌํจํจ.
- ์๋๋ ๋ฌธ์ ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ฐ ๋ฉด์๋ํด ์ธ๋ฑ์ค๋ฅผ ๋๋ฒ๋งํ ๋ชจ์ต์ ๊ทธ๋ฆผ(?)์ผ๋ก ํํํด๋ดค๋๋ฐ.. ๋ง์ฐ์ค๋ก ๊ทธ๋ฆผ ์ด์ผ๊ทธ๋ฆฌ๋์

- ์๋ฌดํผ ์ผ๋จ ์ธ๋ฑ์ค๋ฅผ ๋ถ์ฌํ๊ณ ํด๋น ์ธ๋ฑ์ค๋ณ๋ก ๋,์,๋ถ,๋จ ์๋ค๋ฆฌ๊ฐ๋ค๋ฆฌ ๊ตด๋ ธ์ ๋ ๋ฒํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ํจ์๊ฐ rotateCube๋ผ๋ ๋ง
- ๊ทธ๋ฆฌ๊ณ main ๋ฉ์๋์์๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ์ด๋ ์์์ ๋ง์ถฐ ์ด๋ํ๊ณ , ์ด๋ํ ๋๋ง๋ค ์นธ์์ ์ํํด์ผ๋๋ ์ซ์๋ณต์ฌ์์ ์ ์งํ.