-
백준 5014번 스타트링크PS 2020. 3. 24. 12:51
https://www.acmicpc.net/problem/5014
5014번: 스타트링크
문제 강호는 코딩 교육을 하는 스타트업 스타트링크에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다. 스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이동하려고 한다. 보통 엘리베이터에는 어떤 층으로 이동할 수 있는 버튼이 있지만, 강호가 탄 엘리베이터는 버튼이 2개밖에 없
www.acmicpc.net
<접근방법>
bfs 완전탐색 문제입니다.
엘리베이터로 이동하므로 최소 층과 최대 층이 있음에 유의해야 합니다.
<느낀 점>
<코드>
#include <iostream> #include <algorithm> #include <queue> using namespace std; #define max 1000000 int F, S, G, U, D; bool visit[max + 1]; queue<int> q; int bfs() { q.push(S); visit[S] = true; int cnt = 0; while (!q.empty()) { int sz = q.size(); while (sz--) { int now = q.front(); q.pop(); if (!(1 <= now && now <= F)) continue; if (now == G) { return cnt; } int u = now + U; int d = now - D; if (u <= max) { if (!visit[u]) { visit[u] = true; q.push(u); } } if (1 <= d) { if (!visit[d]) { visit[d] = true; q.push(d); } } } cnt++; } return -1; } int main() { cin >> F >> S >> G >> U >> D; int ans = bfs(); if (ans == -1) cout << "use the stairs" << '\n'; else cout << ans << '\n'; return 0; }
반응형'PS' 카테고리의 다른 글
백준 16940번 BFS 스페셜 저지 (0) 2020.04.08 백준 16957번 체스판 위의 공 (0) 2020.03.24 백준 17069번 파이프 옮기기2 (0) 2020.03.22 백준 16931번 겉넓이 구하기 (0) 2020.03.21 백준 16974번 레벨 햄버거 (0) 2020.03.19