- BFS
- 큐 이용
- for문 + dx 좌표 잡는 대신, 가능한 3번의 경우를 모두 큐에 넣어버림
https://www.acmicpc.net/problem/1697
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int visited[100000]={0};
int t[100000]={0}; // 시간 측정
int main(){
int st, en;
int cnt=0;
scanf("%d %d", &st, &en);
visited[st]=1; // 현재 위치를 1로
// BFS
queue<int> q;
q.push(st);
visited[st]=1;
while(!q.empty()){
int cur = q.front();
q.pop();
// 3방향
// cur - 1
int ncur = cur - 1;
if(ncur>=0 && ncur<=100000){
if(visited[ncur]==0){
visited[ncur]=1;
q.push(ncur);
t[ncur] = t[cur] + 1;
}
}
// cur + 1
ncur = cur + 1;
if(ncur>=0 && ncur<=100000){
if(visited[ncur]==0){
visited[ncur]=1;
q.push(ncur);
t[ncur] = t[cur] + 1;
}
}
// cur * 2
ncur = cur * 2;
if(ncur>=0 && ncur<=100000){
if(visited[ncur]==0){
visited[ncur]=1;
q.push(ncur);
t[ncur] = t[cur] + 1;
}
}
} /// while end
printf("%d", t[en]);
}
'BOJ' 카테고리의 다른 글
BOJ 10026 적록색약 (0) | 2019.04.07 |
---|---|
BOJ 2583 영역 구하기 DFS (0) | 2019.04.06 |
BOJ 1012 유기농 배추 DFS (0) | 2019.04.06 |
BOJ 1926 그림 - DFS (0) | 2019.04.06 |
BOJ 7576 토마토 - BFS (0) | 2019.04.05 |