티스토리 뷰
이번문제는 전형적인 BFS문제입니다. 시작점부터 목표점까지 갈 수 있도록 탐색하는 문제입니다.
밑에는 제 코드입니다.
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 34 35 36 37 38 39 40 41 42 43 44 | #include <iostream> #include <queue> using namespace std; int F, S, G, U, D; vector<int> floors; vector<int> visited;//visited에 이동횟수 입력 bool isSafe(int pos) { if (pos<0 || pos> F) return false; else return true;//범위 체크 } int bfs(int from,int to) { queue<int> q; q.push(from); visited[from] = 1; while (!q.empty()) { int cur = q.front(); if (cur == to) return visited[to];//목표층 도착 if (isSafe(cur+U) && !visited[cur + U]) { q.push(cur + U);//U버튼 visited[cur + U] = visited[cur] + 1; } if (isSafe(cur-D) && !visited[cur - D]) { q.push(cur - D);//D버튼 visited[cur - D] = visited[cur] + 1; } q.pop(); } return 0; } int main(void) { cin >> F >> S >> G >> U >> D; floors.resize(F + 5); visited.resize(F + 5); int cnt = bfs(S, G); if (cnt) cout << cnt - 1<< endl; else cout << "use the stairs\n"; return 0; } | cs |
'Coding > acmicpc' 카테고리의 다른 글
백준 2573:빙산 (2) | 2018.04.19 |
---|---|
백준 2146:다리 만들기 (0) | 2018.04.19 |
백준 7576:토마토 (0) | 2018.04.16 |
백준 6593:상범 빌딩 (0) | 2018.04.16 |
백준 12851, 13549, 13913:숨바꼭질 시리즈.. feat.순간이동 (8) | 2018.04.03 |