반응형
5014번 스타트링크
-
간단한 BFS 문제이다.
-
풀이방법
1) BFS 탐색중 F보다 클 수 없고, 0보다 작을 순 없다.
2) check2라는 배열을 통해 몇 번째에 찾았는지 검색을 해줬다.
5014번: 스타트링크
문제 강호는 코딩 교육을 하는 스타트업 스타트링크에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다. 스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이동하려고 한다. 보통 엘리베이터에는 어떤 층으로 이동할 수 있는 버튼이 있지만, 강호가 탄 엘리베이터는 버튼이 2개밖에 없
www.acmicpc.net
#include <iostream> #include <string> #include <algorithm> #include <queue> #include <vector> using namespace std; queue<int> q; bool check[2000000]; int check2[2000000]; int F, S, G, U, D; vector<int> v; void bfs() { q.push(S); while (!q.empty()) { int x = q.front(); q.pop(); if (x == G) { //목표에 갔을 때 cout << check2[x]-1<< "\n"; return; } for (int i = 0; i < 2; i++) { int dx = x + v[i]; if(dx > F || dx < 0) continue; if(check[dx] == true) continue; q.push(dx); check[dx] = true; check2[dx] = check2[x]+ 1; } } cout << "use the stairs"; } int main(void){ cin >> F >> S >> G >> U >> D; check2[S] = 1; check[S] = true; v.push_back(U); v.push_back(-D); bfs(); return 0; }
반응형
'알고리즘 > acmicpc' 카테고리의 다른 글
[백준][10870번] 피보나치 수5[cpp, c++] (0) | 2020.01.30 |
---|---|
[백준][7569번] 토마토[cpp, c++] (0) | 2020.01.29 |
[백준][1475번] 방 번호 [cpp, c++] (0) | 2020.01.22 |
[백준][14891번] 톱니바퀴 [cpp, c++] (0) | 2020.01.18 |
[백준][11559번] Puyo Puyo [cpp, c++] (0) | 2020.01.18 |