✅ BFS ✅ 최단경로
최단 경로를 구하는 문제이므로 BFS 사용
보통 문제들와 다르게 일차원 map (-> array)이라 생각하고 풀 수 있다.
int map[1000002]
int dist[1000002]
queue<int> que
BFS(){
while(!que.empty){
x = que.front
que.pop
for(i : 0 ~ 1){
nx = x + dx[i]
if(nx < 1 || nx > F) continue
if(map[nx] == 1) continue
dist[nx] = dist[x] + 1
que.push(nx)
map[nx] = 1
if(nx == G){
cout << dist[nx]
flag = true
return
}
}
}
}
main(){
cin >> F >> S >> G >> U >> D
dx = {U, -D}
map[S] = 1
que.push(S)
BFS()
if(flag == false) cout << "use the stairs"
}
O(N^2)
map이 일차원이라는 것 말고는 특별한게 없었음 (이차원보다 간단한데 왜 골드인지 모르겠..)