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
- 1764
- 백준 17822
- 해시 구현
- 백준 5397
- 자료구조
- Stack 이란
- 백준 2447
- 원판 돌리기
- 별 찍기 10
- 시간 복잡도
- 백준 1406
- 구현
- 버킷 정렬
- 게리멘더링2
- 조세퍼스 순열
- C/C++ 구현
- 백준 17471
- 해시구현
- 풀이
- AVL 시간 복잡도
- heap
- 백준 1158
- 백준
- ㅣ풀이
- qorwns
- 스택의 특징
- 5397
- 백준 17779
- dfs
- c#
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 1697] 숨바꼭질 본문
하루에 하나 알고리즘
누군가에게 조금이라도 도움이 됫으면 하는 바램으로 이 글을 작성합니다
제일 기초적인 알고리즘입니다.
풀이시간 : 5분
한번만에 맞추어서 기분이 좋네요
더 빨리 처리하는 방법이 있을텐데 그냥 문제의 조건만 넣어도 풀리는 문제 였습니다.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 #include <iostream>#include <queue>using namespace std;int n, k;queue<int> q;int visit[100001] = { 0, };int ans=0;//bfsvoid bfs(int go){visit[go] = 1;q.push(go);int cnt = 0;while (!q.empty()){int x = q.front();//도착했을 경우 멈춤.// go의 위치에서 이동하지 않았는데 멈추었으므로 정답은 -1 을 해줌if (x == k){ans = visit[x]-1;break;}q.pop();// 문제에서 각 조건들 체크 후 q 삽입if (x - 1 >= 0 && visit[x - 1] == 0){visit[x - 1] = visit[x] + 1;q.push(x - 1);}if (x + 1 <= 100000 && visit[x + 1] == 0){visit[x + 1] = visit[x] + 1;q.push(x + 1);}if (x * 2 <= 100000 && visit[2 * x] == 0){visit[x * 2] = visit[x] + 1;q.push(x * 2);}}}int main(){cin >> n >> k;bfs(n);cout << ans << endl;return 0;}cs
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 17406] 배열돌리기 4 (0) | 2019.08.13 |
---|---|
[백준 14889] 스타트와 링크 (0) | 2019.02.14 |
[백준 2589] 보물섬 (0) | 2018.11.22 |
[백준 2178] 미로탐색 (0) | 2018.11.20 |
[백준 1260] dfs와 bfs (0) | 2018.11.14 |
Comments