일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 정렬
- 너비우선탐색
- join
- DP
- Greedy
- 다이나믹프로그래밍
- mariaDB
- select
- 피보나치
- 알고리즘
- IntelliJ
- mybatis
- 데이터베이스
- 그리디알고리즘
- db
- 이펙티브자바
- 탐욕법
- 코테
- 우선순위큐
- 백준
- Database
- BFS
- java
- DFS
- 깊이우선탐색
- 프로그래머스
- Effective Java
- SQL
- Spring
- springboot
Archives
- Today
- Total
땀두 블로그
[백준] 16928번 - 뱀과 사다리 게임 본문


BFS를 이용해서 탐색하는 문제이다. 사다리와 뱀을 다르게 생각하지 말고, 같은 배열에 key, value조합이라고 생각하면 문제 해결에 도움이 된다. 이미 지나간 부분이나 100을 넘긴 숫자가 들어오면 넘어가고, 그렇지 않은 경우 count를 증가시킨다. 그렇게 해서 주사위 눈이 나올 수 있는 1~6까지의 값을 더해주면서 사다리, 뱀 유무를 판단하여 이동한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class p16928 {
public static int[] ary = new int[101];
public static int[] cnt = new int[101];
public static boolean[] visited = new boolean[101];
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
for (int i = 0; i < a + b; i++) {
st = new StringTokenizer(br.readLine());
int k = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
ary[k] = m;
}
bfs();
}
public static void bfs() {
Queue<Integer> q = new LinkedList<>();
q.add(1);
cnt[1] = 0;
visited[1] = true;
while(!q.isEmpty()) {
int a = q.poll();
if (a == 100) {
System.out.println(cnt[a]);
return;
}
for (int i = 1; i < 7; i++) {
int x = a + i;
if (x > 100) {
continue;
}
if (visited[x] == true) {
continue;
}
visited[x] = true;
if (ary[x] > 0) {
if (visited[ary[x]] == false) {
q.add(ary[x]);
visited[ary[x]] = true;
cnt[ary[x]] = cnt[a] + 1;
}
} else {
q.add(x);
cnt[x] = cnt[a] + 1;
}
}
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 5430번 - AC (0) | 2022.03.23 |
---|---|
[백준] 1107번 - 리모콘 (0) | 2022.03.23 |
[백준] 11403번 - 경로 찾기 (0) | 2022.03.23 |
[백준] 6064번 - 카잉 달력 (0) | 2022.03.23 |
[백준] 1992번 - 쿼드트리 (0) | 2022.03.23 |
Comments