반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 도커 명령어
- C++
- devops
- kubernetes
- ios
- 네트워크
- 쿠버네티스
- 리눅스
- AWS
- 데브옵스
- centOS
- 컨테이너
- 도커 컨테이너
- boj
- docker
- swift 클로저
- NGINX
- 프로세스
- 부스트코스
- centOS7
- k8s
- linux
- 클라우드
- 도커
- 인프라
- os
- Swift
- 도커 이미지
- 운영체제
- Python
Archives
- Today
- Total
귀염둥이의 메모
[백준] 5014번: 스타트링크 (C++) 본문
반응형
BFS를 이용해서 해결할 수 있었다.
+u와 -d씩 움직이며 탐색을 한다.
탈출 조건은 g(목표점)에 도달했을때 (vis배열 값 - 1) 을 return한다.
- vis배열은 버튼을 누른횟수가 들어가는데 처음에 0이 아닌 1이 들어가기때문에 (vis배열 값 - 1) 을 return 해준다.
탐색을 완전히 할때까지 g에 도달하지 못하면 "use the stairs"을 출력한다.
소스코드
#include <bits/stdc++.h>
using namespace std;
// f: 총 몇층? 1 ~ (1e6), s: 현재위치, g: 목표점
int f, s, g, u, d, result;
int vis[int(1e6) + 1];
int bfs(int cur) {
queue<int> q;
int dx[2] = {u, -d};
vis[cur] = 1;
q.push(cur);
while (!q.empty()) {
int x = q.front(); q.pop();
if (x == g) {
return vis[x] - 1;
}
for (int i = 0; i < 2; i++) {
int nx = x + dx[i];
if (nx < 1 || nx > f) continue;
if (vis[nx]) continue;
vis[nx] = vis[x] + 1;
q.push(nx);
}
}
return -1;
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> f >> s >> g >> u >> d;
result = bfs(s);
if (result == -1) cout << "use the stairs";
else cout << result;
return 0;
}
반응형
'CS > 백준' 카테고리의 다른 글
[백준] 14503번: 로봇 청소기 (C++) (0) | 2021.03.31 |
---|---|
[백준] 17144번: 미세먼지 안녕! (C++) (0) | 2021.03.30 |
[백준] 14500번: 테트로미노 (C++) (0) | 2021.03.28 |
[백준] 14889번: 스타트와 링크 (C++) (0) | 2021.03.28 |
[백준] 3190번: 뱀 (C++) (2) | 2021.03.28 |
Comments