개발/백준
[백준] 16928번. 뱀과 사다리 게임 (C++)
yun000
2024. 12. 30. 22:40
🌘 문제
https://www.acmicpc.net/problem/16928
🌗 풀이
[BFS]
흔한 bfs문제이다
한칸에 사다리와 뱀이 동시에 있는 경우는 없기 때문에
board하나로 뱀와 사다리를 통한 이동을 확인할 수 있다
board[시작위치]=이동위치
🌖 코드
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
// INPUT
int ladderNum, snakeNum;
cin >> ladderNum >> snakeNum;
vector<int> board(101, 0);
int from, to;
for (int i = 0; i < ladderNum; i++)
{
cin >> from >> to;
board[from] = to;
}
for (int i = 0; i < snakeNum; i++)
{
cin >> from >> to;
board[from] = to;
}
vector<int> visited(101, 0);
queue<pair<int, int>>q;//nowPosition, count
//CHECK
q.push({ 1,0 });
visited[1] = 1;
while (!q.empty())
{
int nowPos = q.front().first;
int count = q.front().second;
q.pop();
if (nowPos == 100) { cout << count; break; }
for (int i = 1; i <= 6; i++)
{
int nextPos = nowPos + i;
if (nextPos > 100)continue;
if (board[nextPos] != 0) { nextPos = board[nextPos]; }
if (visited[nextPos] == 1)continue;
visited[nextPos] = 1;
q.push({ nextPos,count + 1 });
}
}
return 0;
}