ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 16928 뱀과 사다리 게임
    백준/그래프 이론 2024. 6. 18. 22:01
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.StringTokenizer;
    
    public class Main {	
    	
    	static int move[];
    	static boolean visit[];
    	
    	public static void main(String[] args) throws IOException {		
    	
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
    		int N = Integer.parseInt(st.nextToken());
    		int M =  Integer.parseInt(st.nextToken());
    	
    		move = new int[100];
    		visit = new boolean[100];
    	
    		for(int i=0; i<N+M; i++) {
    			st = new StringTokenizer(br.readLine(), " ");
    			
    			int a= Integer.parseInt(st.nextToken());
    			int b= Integer.parseInt(st.nextToken());
    			move[a] = b;
    			
    		}		
    				
    		int result = solve(1);
    		System.out.println(result);
    		
    	}
    	
    	
    	
    	public static int solve(int start) {		
    		
    		Queue<Integer> q = new LinkedList<>();
    		q.add(start);
    		int count = 0;
    		
    		solve2:
    		while(!q.isEmpty()) {
    			
    			count++; // 현재 깊이(레벨)에서 주사위를 굴린 횟수를 증가
    			int size = q.size();
    			
    			// 큐 크기(size) 만큼 for문 돌려야 
    			// while문 내에서 count변수를 사용해서 답을 출력함.
    			for(int i= 0; i<size; i++ ) {
    							
    				int now = q.poll();	
    				
    				for(int j=0; j<=6; j++) {
    					
    					int next = now+j;				
    					
    					if(next>100) {								 
    						continue;
    						
    					}if(next==100) {												
    						break solve2;
    					}			
    					
    					// visit 사용 이유
    					// -> 똑같은 위치로 다시 이동하면 또 똑같이 경우의 수 찾을거라..
    					// -> visit 사용 안 하면 메모리 초과 나옴. 
    					if(visit[next]) { 						
    						continue; 
    					}				 
    					
    					// 뱀, 사다리
    					if(move[next]!=0) {								
    							next = move[next];								
    					}
    					
    					visit[next] = true;
    					q.add(next);
    				}		
    			}			
    		}
    		return count;		
    		
    	}
    }

     

    '백준 > 그래프 이론' 카테고리의 다른 글

    18405 경쟁적 전염  (0) 2024.06.22
    1707 이분 그래프  (0) 2024.06.19
    3055 탈출  (0) 2024.06.18
    1068 트리  (0) 2024.06.12
    14502 연구소  (2) 2024.06.10

    댓글

Designed by Tistory.