현재위치에서 최소 몇 번의 이동으로 송아지의 위치까지 가는가?
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
int s, e, x;
int pos[3] = {-1, 1, 5}, ch[10001];
queue<int> Q;
cin >> s >> e;
// s부터 출발하기 때문, Q에 s를 넣는다.
Q.push(s);
// s에서 출발 - 이동 횟수 1회 더함
ch[s] = 1;
while(!Q.empty()){
x = Q.front();
Q.pop();
// 현재위치에서 1, -1, 5만큼 이동한 것을 모두 체크한다.
for(int i=0; i<3; i++){
if(x+pos[i] < 0 || x+pos[i] > 10000) continue;
if(ch[x+pos[i]] == 0){
ch[x+pos[i]] += ch[x] + 1;
Q.push(x+pos[i]);
}
// x에서 pos[i]만큼 이동한 좌표가 e라면 이동한 횟수 출력
// 출발할때 이미 1을 더한 상태로 시작했기 때문에 이전좌표까지의 이동횟수를 출력한다.
if(x+pos[i] == e){
cout << ch[x];
exit(0);
}
}
}
return 0;
}