BOJ 13913 숨바꼭질 4

2020. 12. 28. 22:20·알고리즘/BOJ

www.acmicpc.net/problem/13913

 

13913번: 숨바꼭질 4

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

 

이번 문제는 경로를 추적해서 출력하는 문제였다.

조금만 생각해보면 금방 알 수 있는데, 현재 위치를 지나가는 배열 a를 만들어서

a[next] = cur 를 담고있다고 가정해보면 a[k] 에는 k에 도착하기 전 가장 마지막 위치가 담겨있을 것이고,

a[마지막 위치] 에는 그 위치에 오기 위한 위치가 점진적으로 들어있을 것이다.

 

그렇다면 구현은 간단하다.

기존 bfs를 통해 최단시간을 구할 때 a[next] = cur 만 추가해주고 이후에 재귀적인 호출을 통해

역추적해주면 된다.

 

 

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
32
33
34
35
36
37
38
39
#include <iostream>
#include <queue>
using namespace std;
 
int a[100001], n, k;
int vis[100001];
queue<int> q;
 
void backtrace(int cur) {
    if (cur == n) {
        cout << n << ' '; return;
    }
    backtrace(a[cur]);
    cout << cur << ' ';
}
 
int main() {
    cin >> n >> k;
 
    q.push(n);
 
    while (!q.empty()) {
        int cur = q.front(); q.pop();
        if (cur == k) break;
        for (int i : {cur - 1, cur + 1, cur * 2}) {
            if (0 <= i && i <= 100000 && !vis[i]) {
                vis[i] = vis[cur] + 1;
                q.push(i);
                a[i] = cur;
            }
        }
    }
 
    cout << vis[k] << endl;
    backtrace(k);
    cout << endl;
 
    return 0;
}
Colored by Color Scripter
cs

 

'알고리즘 > BOJ' 카테고리의 다른 글

BOJ 1713 후보 추천하기  (0) 2021.01.01
BOJ 13549 숨바꼭질 3  (0) 2020.12.28
BOJ 12851 숨바꼭질 2  (0) 2020.12.28
BOJ 15686 치킨 배달  (0) 2020.12.25
BOJ 3190 뱀  (0) 2020.12.19
'알고리즘/BOJ' 카테고리의 다른 글
  • BOJ 1713 후보 추천하기
  • BOJ 13549 숨바꼭질 3
  • BOJ 12851 숨바꼭질 2
  • BOJ 15686 치킨 배달
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    조합
    행렬 제곱
    구현
    코딩테스트 연습
    다익스트라
    dfs
    완전탐색
    피보나치 수
    소수
    피사노 주기
    이분 탐색
    SWEA
    BFS
    dp
    냅색
    팰린드롬
    분할 정복
    우선순위 큐
    알고리즘
    BOJ
    MST
    프로그래머스
    이분탐색
    시뮬레이션
    GREEDY
    크루스칼
    트리
    완전 탐색
    유니온 파인드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 13913 숨바꼭질 4
상단으로

티스토리툴바