티스토리 뷰

Algorithm

백준_숨바꼭질_1697

Young_J 2020. 12. 10. 23:37

//알고리즘

1. bfs 탐색

 -> 1차원 배열을 만들고 시작점에서 도착점까지 탐색

 -> 방문배열을 사용하여 한번 갔던곳은 다시 못가게 만듦

 

매일 2차원 배열에서의 bfs만 풀다가 1차원 배열로 bfs탐색을 풀어보니까 새로웠다.

더보기
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class 숨바꼭질_1697 {
	static int T, K, arr[];
	static boolean v[];
	static int[] dr = { -1, 1, 2 };

	static class Point {

		int r, cnt;

		public Point(int r, int cnt) {
			super();
			this.r = r;
			this.cnt = cnt;
		}

	}

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		T = sc.nextInt();
		K = sc.nextInt();

		arr = new int[100001];
		v = new boolean[100001];

		bfs(T);
	}

	private static void bfs(int t) {
		Queue<Point> q = new LinkedList<Point>();
		v[t] = true;
		q.add(new Point(t, 0));
		
		Point p = null;
		while(!q.isEmpty()) {
			p  = q.poll();
			
			if(p.r == K) {
				System.out.println(p.cnt);
				return;
			}
			
			int nr;
			for (int d = 0; d < 3; d++) {
				if(d==2) {
					nr = p.r* dr[d];
				}else {
					nr = p.r + dr[d];
				}
				
				if(nr< 0  || nr >= 100001 || v[nr]) continue;
				
				v[nr] = true;
				q.add(new Point(nr, p.cnt+1));
				
			}
			
		}
		
	}

}

'Algorithm' 카테고리의 다른 글

백준_특정한 최단 경로_1504  (0) 2020.12.12
백준_피보나치 수 2_2748  (0) 2020.12.11
백준_제로_10773  (0) 2020.12.09
백준_동전2_2294  (0) 2020.12.08
백준_상근이의 여행_9372  (0) 2020.12.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함