C++)
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int visited[1000002];
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
fill(visited, visited + 1000002, -1);
int f, s, g, u, d, node;
cin >> f >> s >> g >> u >> d;
visited[s] = 0;
queue<int> q;
q.push(s);
while (!q.empty()) {
node = q.front();
q.pop();
if (node == g) {
break;
}
if (node + u <= f && visited[node + u] == -1) {
q.push(node + u);
visited[node + u] = visited[node] + 1;
}
if (node - d >= 1 && visited[node - d] == -1) {
q.push(node - d);
visited[node - d] = visited[node] + 1;
}
}
(visited[g] == -1) ? cout << "use the stairs" : cout << visited[g];
return 0;
}
1. 범위체크 : 1 <= 층 <= 1,000,000
2. 같은 층에 있을 경우 : ex) 1 1 1 1 1
Python)
import sys
from collections import deque
q = deque()
max_num = 1000002
visited = [-1] * max_num
f, s, g, u, d = map(int, sys.stdin.readline().rstrip().split())
q.append(s)
visited[s] = 0
while q:
cur = q.popleft()
if cur == g:
break
if cur + u <= f and visited[cur + u] == -1:
visited[cur + u] = visited[cur] + 1
q.append(cur+u)
if cur - d >= 1 and visited[cur - d] == -1:
visited[cur - d] = visited[cur] + 1
q.append(cur - d)
print(visited[g] if visited[g] != -1 else "use the stairs")'백준 2 > 그래프' 카테고리의 다른 글
| [백준 2573] 빙산 (C++/Python) (0) | 2023.06.29 |
|---|---|
| [백준 7562] 나이트의 이동 (Python) (0) | 2023.06.28 |
| [백준 1926] 그림 (C++/Python) (0) | 2023.03.24 |
| [백준 2610] 회의준비 (Java) (0) | 2020.12.24 |
| [백준 13168] 내일로 여행 (Java) (0) | 2020.12.24 |