SMALL
https://www.acmicpc.net/problem/16928
16928번: 뱀과 사다리 게임
첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으
www.acmicpc.net
- 문제
- 문제풀이
100칸짜리 맵을 만든 뒤 BFS방식을 사용하여 탐색을 한 후에 최소 횟수를 출력한다.
- 코드 1
using System;
using System.Collections.Generic;
using System.Linq;
class SnakeAndLadderGame
{
static void Main(string[] args)
{
List<int> ladderOrSnake = new List<int>(101);
for (int i = 0; i <= 100; i++)
{
ladderOrSnake.Add(-1);
}
string[] input = Console.ReadLine().Split(' ');
int N = int.Parse(input[0]);
int M = int.Parse(input[1]);
for (int i = 0; i < N + M; i++)
{
int[] data = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
if (data[0] < data[1])
{
ladderOrSnake[data[0]] = data[1];
}
else
{
ladderOrSnake[data[0]] = data[1];
}
}
int[] dist = new int[101];
for (int i = 0; i <= 100; i++)
{
dist[i] = -1;
}
dist[1] = 0;
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
while (queue.Count > 0)
{
int curPos = queue.Dequeue();
for (int i = 1; i <= 6; i++)
{
int nextPos = curPos + i;
if (nextPos <= 100 && ladderOrSnake[nextPos] != -1)
{
nextPos = ladderOrSnake[nextPos];
}
if (nextPos <= 100 && dist[nextPos] == -1)
{
dist[nextPos] = dist[curPos] + 1;
queue.Enqueue(nextPos);
}
}
}
Console.WriteLine(dist[100]);
}
}
- 후기
그래프를 활용한 방식은 까먹지 않게 자주자주 해야겠다.
LIST
'백준 > C#' 카테고리의 다른 글
[C#]백준 2579번: 계단 오르기 (0) | 2023.09.25 |
---|---|
[C#]백준 24511번: queuestack (0) | 2023.08.25 |
[C#]백준 1149번: RGB거리 (0) | 2023.08.25 |
[C#]백준 1912번: 연속합 (0) | 2023.08.25 |
[C#]백준 11053번: 가장 긴 증가하는 부분 수열 (0) | 2023.08.25 |