문제
문제 바로가기> BOJ 16928번: 뱀과 사다리 게임
16928번: 뱀과 사다리 게임
첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으
www.acmicpc.net
풀이
사다리와 뱀 정보를 path 배열에 저장해주고, BFS를 통해 문제를 해결할 수 있다.
BFS를 진행하는 이유는 "100번 칸에 도착하기 위해 주사위를 굴려야하는 횟수의 최솟값"을 구해야하기 때문이다.
#include<iostream>
#include<queue>
#define MAX 101
using namespace std;
int N, M;
int path[MAX];
bool visited[MAX];
void input(){
cin >> N >> M;
int x, y;
while (N--){
cin >> x >> y;
path[x] = y;
}
while(M--){
cin >> x >> y;
path[x] = y;
}
}
int solution(){
queue<pair<int, int>> q;
q.push({1, 0});
while (!q.empty()){
int num = q.front().first;
int cnt = q.front().second;
q.pop();
if (num == 100) return cnt;
for (int i = 1; i<=6; i++){
if(visited[num+i]) continue;
visited[num+i] = true;
if(path[num+i]!=0) q.push({path[num+i], cnt+1});
else q.push({num+i, cnt+1});
}
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
input();
cout << solution();
}
'문제 풀이 > 백준' 카테고리의 다른 글
BOJ 17485번: 진우의 달 여행 (Large) (0) | 2023.09.04 |
---|---|
BOJ 2230번: 수 고르기 (0) | 2023.09.03 |
BOJ 1347번: 미로 만들기 (0) | 2023.08.08 |
BOJ 9207번: 페그 솔리테어 (1) | 2023.05.16 |
BOJ 11438번: LCA 2 (0) | 2023.04.20 |