Recent Posts
Notice
No Rules Rules
숨바꼭질 4 (feat. 백준, 13913번) 본문
728x90
반응형
숨바꼭질 4
https://www.acmicpc.net/problem/13913
13913번: 숨바꼭질 4
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
반응형
// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <string.h>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
pair<int, int> dp[100001];
bool visit[100001];
int main() {
ios::sync_with_stdio(false), cin.tie(NULL);
memset(visit, false, sizeof(visit));
register int N, K;
cin >> N >> K;
dp[N] = make_pair(-1, 0);
queue<int> q;
q.push(N);
visit[N] = true;
while (!q.empty()) {
auto v = q.front(); q.pop();
if (v == K)
break;
if (v - 1 >= 0 && !visit[v - 1])
visit[v - 1] = true, dp[v - 1].first = v, dp[v - 1].second = dp[v].second + 1, q.push(v - 1);
if (v + 1 <= 100000 && !visit[v + 1])
visit[v + 1] = true, dp[v + 1].first = v, dp[v + 1].second = dp[v].second + 1, q.push(v + 1);
if (v << 1 <= 100000 && !visit[v << 1])
visit[v << 1] = true, dp[v << 1].first = v, dp[v << 1].second = dp[v].second + 1, q.push(v << 1);
}
cout << dp[K].second << "\n";
stack<int> ans;
while (1) {
ans.push(K);
K = dp[K].first;
if (K < 0)
break;
}
while (!ans.empty())
cout << ans.top() << " ", ans.pop();
return 0;
}
// *&)*@*
- 이전 '숨바꼭질' 문제에서 어떤 위치를 거쳐왔는지를 기록했습니다.
- 즉, 기존 dp[N] = 0 을 시작으로 dp[N - 1] = dp[N] + 1, dp[N + 1] = dp[N] + 1, dp[N * 2] = dp[N] + 1 의 과정과 더불어 dp[N-1] = N, dp[N + 1] = N, dp[N * 2] = N 과 같이 어떤 위치를 거쳐왔는지를 기록하는 방법입니다.
- '숨바꼭질' 문제를 풀지 않으셨다면 선행하시길 권장합니다.
숨바꼭질 (feat. 백준, 1697번)
숨바꼭질 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는..
kim519620.tistory.com
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
트리의 부모 찾기 (feat. 백준, 11725번) (0) | 2022.08.26 |
---|---|
DSLR (feat. 백준, 9019번) (0) | 2022.08.26 |
플로이드 2 (feat. 백준, 11780번) (2) | 2022.08.25 |
LCS 2 (feat. 백준, 9252번) (0) | 2022.08.25 |
가장 긴 증가하는 부분 수열 5 (feat. 백준, 14003번) (0) | 2022.08.25 |
Comments