Posts 16928 뱀과 사다리게임
Post
Cancel

16928 뱀과 사다리게임

알고리즘

  1. BFS로 가능한 경우를 찾아가면 된다.

  2. 그런데 주의점은, 뱀을 타는게 더 이득일 경우가 있다는 것만 주의하자

    ex)

    1
    2
    3
    4
    
    2 1
    2 60
    30 99
    65 29
    

코드

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <bits/stdc++.h>

using namespace std;

int N, M, box[110];
list<pair<int,int>> q;
bool visited[110];

int BFS();

int main() {
	cin >> N >> M;
	int t;
	for (int i = 0; i < N; i++) {
		cin >> t;
		cin >> box[t];
	}
	for (int i = 0; i < M; i++) {
		cin >> t;
		cin >> box[t];
	}
	cout << BFS();
}

int BFS() {
	visited[1] = true;
	q.push_back({ 1,0 });
	int result = 2000000000;
	while (!q.empty()) {
		int cur = q.front().first, count = q.front().second;
		q.pop_front();

		if (cur == 100) {
			result = min(result, count);
			continue;
		}
		else if (cur > 100)
			continue;

		for (int i = 1; i <= 6; i++) {
			int next = cur + i;
			if (!visited[next]) {
				if (box[next] != 0) {
					q.push_back({ box[next], count + 1 });
					visited[box[next]] = true;
				}
				else
					q.push_back({ next, count + 1 });
				visited[next] = true;
			}
		}
	}
	return result;
}
This post is licensed under CC BY 4.0 by the author.

14238 출근기록

JunctionXSeoul 2021 후기

Comments powered by Disqus.