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

+ Recent posts