๊ด€๋ฆฌ ๋ฉ”๋‰ด

Algo ์“ฐ์ž

[Code Tree] ์ •์œก๋ฉด์ฒด ๊ตด๋ฆฌ๊ธฐ (์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ํ…Œ์ŠคํŠธ 2016 ํ•˜๋ฐ˜๊ธฐ 1๋ฒˆ) ๋ณธ๋ฌธ

๐Ÿ’ฏ CodingTest/CodeTree

[Code Tree] ์ •์œก๋ฉด์ฒด ๊ตด๋ฆฌ๊ธฐ (์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ํ…Œ์ŠคํŠธ 2016 ํ•˜๋ฐ˜๊ธฐ 1๋ฒˆ)

S.Honey 2024. 9. 2. 21:48

๋ฌธ์ œ

์ •์œก๋ฉด์ฒด ๊ตด๋ฆฌ๊ธฐ

 

์ฝ”๋“œํŠธ๋ฆฌ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์„

๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ๋งŒ๋“  ์ฝ”๋”ฉ ๊ณต๋ถ€์˜ ๊ฐ€์ด๋“œ๋ถ ์ฝ”๋”ฉ ์™•์ดˆ๋ณด๋ถ€ํ„ฐ ๊ฟˆ์˜ ์ง์žฅ ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ๊นŒ์ง€, ๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ์—„์„ ํ•œ ์ปค๋ฆฌํ˜๋Ÿผ์œผ๋กœ ์ค€๋น„ํ•ด๋ณด์„ธ์š”.

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 ๋ฉ”์„œ๋“œ์—์„œ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ด๋™ ์ˆœ์„œ์— ๋งž์ถฐ ์ด๋™ํ•˜๊ณ , ์ด๋™ํ• ๋•Œ๋งˆ๋‹ค ์นธ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ๋˜๋Š” ์ˆซ์ž๋ณต์‚ฌ์ž‘์—…์„ ์ง„ํ–‰.