https://www.acmicpc.net/problem/5014
풀이법
1) 두개의 배열과 bfs를 활용하면 쉽게 풀 수 있는 문제이다.
2) 현재의 값을 queue에 차근 차근 넣고, now+u>f 일경우 continue로 배열에 넣지 않는다.
3) now-d<0일 경우 또한 continue를 활용하여 넣지 않고, 원하는 값인 g와 현재의 값인 now가 같게되면 값을 출력, queue가 빌때 까지 값을 찾지 못할 경우 use the stairs를 출력해 준다.
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <map>
#include <set>
using namespace std;
int f, s, g, u,d;
int arr[1000001];
bool visited[1000001];
void bfs()
{
queue<pair<int, int>> q;
visited[s] = true;
q.push({ s,0 });
while (!q.empty())
{
int now = q.front().first;
int cnt = q.front().second;
q.pop();
if (now == g)
{
cout << cnt;
return;
}
if (now + u > f)
continue;
if (visited[now + u] == false)
{
visited[now + u] =true;
q.push({ now + u,cnt + 1 });
}
if (now - d < 0)
continue;
if (visited[now - d] == false)
{
visited[now - d] = true;
q.push({ now - d,cnt + 1 });
}
}
cout << "use the stairs";
}
int main()
{
cin.tie(0);
ios::sync_with_stdio(false);
cin >> f >> s >> g >> u >> d;
bfs();
}
'Coding_Test_C++' 카테고리의 다른 글
BaekJoon 2573번: 빙산(C++) + 문제 오류 (0) | 2021.07.11 |
---|---|
BaekJoon 1600번: 말이 되고픈 원숭이(C++) (0) | 2021.07.10 |
BaekJoon 7662번: 이중 우선순위 큐(C++) (0) | 2021.07.06 |
BaekJoon 18870번: 좌표 압축(C++) (0) | 2021.07.05 |
BaekJoon 1620번: 나는야 포켓몬 마스터 이다솜(C++) (0) | 2021.07.04 |