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 |
Tags
- 백준 9375번 패션왕 신해빈
- 백준 1049번 기타줄
- 서울사대부고 학원
- 월곡동 학원추천
- 고정 소수점
- 상월곡역 학원
- 백준 1049번
- 백준 토마토
- C++ 9996
- 백준 한국이 그리울 땐 서버에 접속하지
- 백준 2309번 일곱 난쟁이
- 운영체제
- OS
- 백준 dfs
- C# 병합정렬
- 백준 14246번
- 월곡역 학원
- 관리형 학원
- 백준 14246번 K보다 큰 구간
- 상월곡동 학원
- c++ 조합
- 백준 K보다 큰 구간
- c++ split
- DFS
- C++ 문자열
- 성북구 학원
- 백준 패션왕 신해빈
- 백준 10709
- 월곡중학교 학원추천
- 월곡중 학원
Archives
- Today
- Total
키베이루's diary
[C++] 백준 16928번 뱀과 사다리 게임 본문
1) 문제설명
2) 아이디어
주사위를 최소로 굴리는 횟수를 출력해야 하기 때문에 BFS를 사용했다.
반복문을 사용하여 주사위를 굴려서 도착한 곳이 사다리 or 뱀이 있는 곳이면 사다리 or 뱀의 목표지점으로 이동한다.
방문처리에 유의하며 BFS를 구현하면 문제없이 해결할 수 있다.
※ 서로 다른 위치의 사다리에서 같은 곳으로 이동할 수 있고 뱀을 타고 내려가도 최소 횟수로 이동할 수 있는 점을 유의한다.
3) 코드
#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>
using namespace std;
int arr[120];
int range[120] = { 0, };
int n, m;
int result;
queue<int> a;
int bfs(int* xrr, int* yrr) {
a.push(1);
arr[1] = 1;
while (!a.empty()) {
int x = a.front(); // 1
a.pop();
int dx[] = { 1,2,3,4,5,6 }; // 주사위 1~6
for (int i = 0; i < 6; i++) {
int nx;
nx = x + dx[i];
if (nx < 1 || nx > 100 || arr[nx] == 1) { // 범위를 벗어나거나 다음 도착할 곳이 이미 방문한 곳일경우
continue; // 넘어간다
}
else {
for (int j = 0; j < n + m; j++) {
if (nx == xrr[j]) { // 다음 도착할 곳이 뱀이나 사다리를 만날 경우
arr[nx] = 1; // 방문 표시
nx = yrr[j]; // 사다리를 타고 올라간다
break;
}
}
if (arr[nx] == 0) { // 사다리를 타고 올라간 곳이 방문하지 않은 곳이라면
arr[nx] = 1; // 방문처리
a.push(nx);
range[nx] = range[x] + 1;
result = range[nx];
}
}
if (nx == 100) {
return result;
break;
}
}
}
}
int main() {
int x[35], y[35];
cin >> n >> m;
for (int i = 0; i < n + m; i++) {
cin >> x[i] >> y[i];
}
bfs(x, y);
cout << result;
}
'알고리즘 > BFS, DFS' 카테고리의 다른 글
[C++] 백준 13023번 ABCDE (0) | 2022.06.14 |
---|---|
[C++] 백준 2206번 벽 부수고 이동하기 (0) | 2022.06.13 |
[C++] 백준 7579번 토마토 (0) | 2022.06.11 |
[C++] 백준 1697번 숨바꼭질 (0) | 2022.06.10 |
[C++] 백준 7576번 토마토 (0) | 2022.06.10 |
Comments