[백준11047 - Java] 구현 - 주사위 굴리기

2024. 4. 23. 16:40·문제 풀이/백준 문제풀이
728x90
반응형
SMALL

 

주사위 굴리기

 

문제

풀이

  1. 문제 파악
  • 필요한 기능
    • 이동
      • 이동시에는 지도 밖으로 나가는지 확인해야 하는 조건 필요
      • 이동 시 주사위 배열의 위치를 변경시켜줘야 함
    • 바닥면 복사
      • 바닥이 0 일 경우 주사위의 바닥면을 바닥에 복사
      • 바닥이 0 이 아닐경우 바닥의 수를 주사위 바닥면에 복사 후 바닥의 값은 0으로 변경
  1. 변수 생성
    • 지도 생성에 필요한 변수
    • 현재 위치 변수
    • 주사위 오더 횟수 변수
    • 동서남북 이동시 필요한 x,y 이동 배열 변수
    • 주사위 배열 변수
    public static int n,m,x,y,k;
            public static int[][] map;
    
            //동,서,북,남
            public static int[] dx = {0,0,-1,1};
            public static int[] dy = {1, -1, 0, 0};
    
            //윗,바,앞,뒤,왼,오
            public static int[] dice = {0, 0, 0, 0, 0, 0};
  1. 코드 구현
    package Simulation;
    
    import java.io.*;
    import java.util.*;
    
    public class SimulationP14499 {
            public static int n,m,x,y,k;
            public static int[][] map;
    
            //동,서,북,남
            public static int[] dx = {0,0,-1,1};
            public static int[] dy = {1, -1, 0, 0};
    
            //윗,바,앞,뒤,왼,오
            public static int[] dice = {0, 0, 0, 0, 0, 0};
        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());
            x =Integer.parseInt(st.nextToken());
            y= Integer.parseInt(st.nextToken());
            k = Integer.parseInt(st.nextToken());
            map = new int[n][m];
            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 move = Integer.parseInt(st.nextToken())-1;
                x += dx[move];
                y += dy[move];
                if (x < 0 || x >= n || y < 0 || y >= m) {
                    x -=dx[move];
                    y -= dy[move];
                    continue;
                }
    
                switch (move) {
                    case 0:
                        move_right();
                        break;
                    case 1:
                        move_left();
                        break;
                    case 2:
                        move_up();
                        break;
                    case 3:
                        move_down();
                        break;
                }
    
                //바닥면 복사
                if (map[x][y] == 0) {
                    map[x][y] = dice[1];
                }else{
                    dice[1] = map[x][y];
                    map[x][y] = 0;
                }
    
                System.out.println(dice[0]);
    
            }
        }
    
        private static void move_down() {
            // 윗 -> 앞 -> 바 -> 뒷 -> 윗
            int temp = dice[0];
            dice[0] = dice[3];
            dice[3] = dice[1];
            dice[1] = dice[2];
            dice[2] = temp;
        }
    
        private static void move_up() {
            // 윗 -> 뒷 -> 바 -> 앞 -> 윗
            int temp = dice[0];
            dice[0] = dice[2];
            dice[2] = dice[1];
            dice[1] = dice[3];
            dice[3] = temp;
        }
    
        private static void move_left() {
            // 윗 -> 왼 -> 바 -> 오 -> 윗
            int temp = dice[0];
            dice[0] = dice[5];
            dice[5] = dice[1];
            dice[1] = dice[4];
            dice[4] = temp;
        }
    //    //윗,바,앞,뒤,왼,오
    //    public static int[] dice = {0, 0, 0, 0, 0, 0};
        public static void move_right() {
            int temp = dice[0];
            dice[0] = dice[4];
            dice[4] = dice[1];
            dice[1] = dice[5];
            dice[5]  = temp;
        }
    
    }
    
    

 

728x90
반응형
SMALL

'문제 풀이 > 백준 문제풀이' 카테고리의 다른 글

[BOJ14501 - Java] 퇴사문제 DP로 풀이하기  (0) 2024.07.28
[백준1157- Java] 구현 - 단어 공부  (0) 2024.04.23
[백준11047 - Java] 동전 0 Greedy 알고리즘으로 풀  (0) 2024.03.26
[백준12789-자바/우선순위큐] 도키도키 간식드리미  (0) 2024.03.20
[백준 1427 - 자바/ 선택정렬] 소트인사이드  (0) 2024.03.20
'문제 풀이/백준 문제풀이' 카테고리의 다른 글
  • [BOJ14501 - Java] 퇴사문제 DP로 풀이하기
  • [백준1157- Java] 구현 - 단어 공부
  • [백준11047 - Java] 동전 0 Greedy 알고리즘으로 풀
  • [백준12789-자바/우선순위큐] 도키도키 간식드리미
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (317) N
      • 면접 준비 (38) N
        • OS (6)
        • Spring Security (0)
        • Java (3) N
        • DB (10) N
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      CSS
      리눅스마스터2급
      자바스크립트
      jsp기초
      JavaScript
      자바 알고리즘
      리눅스
      백준
      자바 반복문
      Spring Data Redis
      Spring
      레디스
      springsecurity
      자바 면접
      redis
      리눅스마스터2급정리
      JS
      자바
      jsp request
      Til
      HTML
      스프링프레임워크
      프로그래머스
      spring redis
      자바 면접질문
      Springframework
      redis 채팅
      java
      JSP
      자바기초
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [백준11047 - Java] 구현 - 주사위 굴리기
    상단으로

    티스토리툴바