관리 메뉴

기억을 위한 기록들

송아지찾기(BFS) 본문

Coding Test - cpp/BFS

송아지찾기(BFS)

에드윈H 2021. 1. 8. 23:00
#include <iostream>
#include <queue>
using namespace std;
int check[10000];
int dir[3] = { 1,-1,5 };
int main()
{
	int s, e;
	queue<int> q;
	cin >> s >> e;

	check[s] = 1; //현재 시작 위치

	q.push(s);

	int CurTarget = 0;
	int NextTarget = 0;

	while (!q.empty())
	{
		CurTarget = q.front();
		q.pop();

		for (int i = 0; i < 3; i++)
		{
			NextTarget = CurTarget + dir[i]; //갈수 있는 위치 조사


			if (NextTarget <= 0 || NextTarget > 10000) //범위 벗어날시 
				continue;
			if (NextTarget == e) {  //목적지 도착시
				cout << check[CurTarget] << endl;
				return 0;
			}

			if (check[NextTarget] == 0) { //다음 대상이 갈수있는곳이라면 
				check[NextTarget] = check[CurTarget] + 1;  //target 위치를 거쳐 왔으니 +1 
				q.push(NextTarget); //다음 대상으로 삼기위해 push
			}
		}
	}

	return 0;
}