-
[BOJ - JAVA] 16928 - 뱀과 사다리 게임 (BFS) 본문
728x90
    
    
  반응형
    
    
    
  # 주소
https://www.acmicpc.net/problem/16928
16928번: 뱀과 사다리 게임
첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으
www.acmicpc.net
# 문제

# 문제 해설 및 코드 리뷰
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Dice{
    int x;
    int cnt;
    Dice(int x, int cnt){
        this.x = x;
        this.cnt = cnt;
    }
}
class Main{
    static int n, m;
    static int[] hoop;
    static boolean[] visit;
    static Queue<Dice> queue = new LinkedList<>();
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        m = scan.nextInt();
        visit = new boolean[101];
        hoop = new int[101];
        for (int i = 0; i < n + m; i++) {
            int x = scan.nextInt();
            int y = scan.nextInt();
            hoop[x] = y;
        }
        bfs();
    }
    static void bfs(){
        queue.offer(new Dice(1, 0));
        visit[1] = true;
        while(!queue.isEmpty()){
            Dice now = queue.poll();
            if(now.x == 100){
                System.out.println(now.cnt);
                System.exit(0);
            }
            for(int i = 1; i <= 6; i++){
                int nx = now.x + i;
                if(nx > 100)
                    continue;
                if(visit[nx])
                    continue;
                if(hoop[nx] > 0){
                    queue.offer(new Dice(hoop[nx], now.cnt + 1));
                    visit[hoop[nx]] = true;
                    continue;
                }
                queue.offer(new Dice(nx, now.cnt + 1));
                visit[nx] = true;
            }
        }
    }
}1부터 100까지 10 x 10크기의 게임판이 있습니다.
1부터 출발하여 100에 도달하면 승리한다 했을 때 가장 빨리 도착할 수 있는 최소번의 횟수를 구하는 문제입니다.
문제를 잘 읽어보면 사다리를 밟으면 몇칸 위로 점핑할 수도 있고 뱀을 밟으면 다시 내려갈 수 있습니다.
그런데 이 둘을 따로 자료구조에 담아서 하기 보다는 그냥 지정한 인덱스로 이동하면 되기 때문에 int타입의 1차원 배열을 이용했습니다.
또한 BFS기법으로 푸시면 별 무리 없이 풀 수 있습니다.
감사합니다.
728x90
    
    
  반응형
    
    
    
  '백준 문제 풀이' 카테고리의 다른 글
| [BOJ - JAVA] 17779 - 게리맨더링 2 (BFS, 시뮬레이션, 코테기출) (0) | 2022.04.08 | 
|---|---|
| [BOJ - JAVA] 17144 - 미세먼지 안녕! (시뮬레이션) (0) | 2022.04.05 | 
| [BOJ - JAVA] 22868 - 산책 (BFS) (0) | 2022.03.25 | 
| [BOJ - JAVA] 4179 - 불! (BFS) (0) | 2022.03.21 | 
| [BOJ - JAVA] 16954 - 움직이는 미로 탈출 (BFS) (0) | 2022.03.20 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
				 
								 
								 
								