728x90
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<deque>
#include<math.h>
#include<cmath>
using namespace std;
int main() {
//55분 걸림
//쉬운 문제였으나 느긋하게 푼것도 있고, 처음에 지나지 않은 층수를 0으로 두고 시작층수를 0으로 둬서 오류가 생김 + 아래로내려갈때 마이너스가아닌 플러스함
int f, s, g, u, d;
cin >> f; // 총 층 수
cin >> s; //시작
cin >> g; //끝
cin >> u; //위로 몇칸
cin >> d; //아래로 몇칸
vector<int>check(f + 1,-1); //체크 할 때 지나간건지 안지나간 건지 판별할 때, 0으로할지 1로할지 잘 판별하기
vector<int>ud;
queue<int>q;
q.push(s);
check[s] = 0;
ud.push_back(u);
ud.push_back(d);
while (!q.empty()) {
int stairs = q.front();
q.pop();
if ( stairs == g ) { break; }
for (int i = 0; i < 2; i++) {
int nstairs;
if (i == 0) {
nstairs = stairs + ud[i];
}
else {
nstairs = stairs - ud[i];
}
if (nstairs <= f && nstairs>0 && check[nstairs]==-1 ) {
check[nstairs] = check[stairs]+1;
q.push(nstairs);
}
}
}
if (check[g] == -1) {
cout << "use the stairs";
return 0;
}
cout << check[g];
return 0;
}
'백준 > BFS' 카테고리의 다른 글
말이되고픈원숭이- 1600번(Java) (0) | 2021.09.15 |
---|---|
구슬탈출2 - 13460번 (Java) (0) | 2021.08.31 |
4연산 (0) | 2021.03.16 |
아기 상어 (0) | 2021.03.15 |
움직이는 미로탈출 (0) | 2021.03.09 |