# BFS\&Deque - Algospot, Hide\_Seek3

모든 가중치가 동일하게 1일 때 BFS&큐를 이용하여 풀었다.&#x20;

가중치가 0 또는 1인 경우에도 BFS를 이용하여 풀 수 있다. 그 비밀은 Deque 또는 2개의 큐 이용에 있다!

* 숨바꼭질3

1. 2개의 큐 이용\
   순간이동을 할 때는 시간이 0초가 걸리기 때문에 걸리는 시간에 영향을 주지 않고, +1/-1인 경우에만 1초가 걸린다.\
   \=>현재의 큐에 순간이동한 좌표 넣고,  그 이외의 경우 다음 큐에 넣는다.\
   \=>현재의 큐에 있는 정점들 다 순회하고 현재의 큐가 비면, 다음 큐가 현재 큐가 된다.\
   위의 과정을 반복한다!
2. Deque 이용\
   가중치가 0인 경우 Deque의 앞에 넣고, **가중치가 1인 경우 Deque의 뒤에 넣는다.**\
   Deque에서 정점을 뺄 때는 remove(=poll)을 해주고, 이것은 Deque의 앞에서부터 정점을 뺀다.

* 숨바꼭질3 - for문 구현!\
  for문을 이렇게도 구현할 수 있구나!\
  int 배열 변수명 없이 생성자로 바로 배열 생성하고, 원소 또한 변수로 생성!

```java
for(int next : new int[] {cur*2,cur+1,cur-1})
```

```java
for(int next : new int[] {cur*2,cur+1,cur-1}) {
				if(0<=next && next<MAX) {
					if(dist[next]  == -1) {
						if(next==cur*2) {
							dist[next] = dist[cur];
							dq.addFirst(next);
						} else {
							dist[next] = dist[cur]+1;
							dq.addLast(next);
						}
					}
				}
			}
```
