[문제]
https://www.acmicpc.net/problem/5014
[풀이]
수식을 이용할 수도 있지만 BFS를 이용한 풀이도 가능하다.
[코드]
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <math.h>
#define INF 987654321
using namespace std;
int f, s, g, u, d;
int visited[1000001] = {0, };
void bfs(){
queue<int> q;
visited[s] = true;
q.push(s);
while(!q.empty()){
int curr = q.front();
q.pop();
if(curr==g){
cout << visited[curr] - 1;
return;
}
int next;
next = curr + u;
if(next <= f && !visited[next]){
visited[next] = visited[curr] + 1;
q.push(next);
}
next = curr - d;
if(next >= 1 && !visited[next]){
visited[next] = visited[curr] + 1;
q.push(next);
}
}
cout << "use the stairs";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> f >> s >> g >> u >> d;
bfs();
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 1520 내리막 길 (c++) - dfs, dp (0) | 2022.09.26 |
---|---|
[boj] 백준 2206 벽 부수고 이동하기 (c++) - BFS (1) | 2022.09.23 |
[boj] 백준 14890 경사로 (c++) - 구현 (0) | 2022.09.15 |
[boj] 백준 1238 파티 (c++) - 다익스트라 (1) | 2022.09.13 |
[boj] 백준 5430 AC (c++) - deque (0) | 2022.09.07 |