https://www.acmicpc.net/problem/5014



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <queue>
using namespace std;
 
int main(){
    ios_base::sync_with_stdio(false);
    int f,s,g,u,d;
    int cnt[1000001= {};
    
    queue<int> q;
    
    cin >> f >> s >> g >> u >> d;
    
    q.push(s);
    cnt[s] = 1// 방문한지 안 한지 구분 위해.
    
    while(!q.empty()){
        int cur = q.front();
        q.pop();
        if(cur == g) break;
        int df[2= {cur + u, cur -d};
        
        for(int i = 0; i < 2; i++){
            if(df[i]<1 || df[i] > f || cnt[df[i]]) continue;
            cnt[df[i]] = cnt[cur] +1;
            q.push(df[i]);
        }
    }
    
    if(cnt[g]) cout << cnt[g]-1//처음 시작을 1로 초기화해서.
    else cout << "use the stairs";
    
}
cs


반응형

'프로그래밍 > 문제풀이' 카테고리의 다른 글

[bfs] 백준 16234 인구 이동  (0) 2018.11.24
[bfs] 백준 3055 탈출  (0) 2018.11.23
[etc] 백준 1350 진짜 공간  (0) 2018.11.21
[stack] 백준 2841 외계인의 기타 연주  (0) 2018.11.19
[dp] 백준 9465 스티커  (0) 2018.11.19

+ Recent posts