모든 일상

C# 백준 1696번 문제 숨바꼭질 본문

코딩 공부/C#

C# 백준 1696번 문제 숨바꼭질

통통푸린 2022. 8. 5. 13:13
728x90
반응형

using System;
using System.Collections;
using System.Collections.Generic;

namespace ConsoleApp3
{    
    public class Program
    {
        static void Main(string[] args)
        {
            string[] input_data = Console.ReadLine().Split(); 

            int start = int.Parse(input_data[0]);
            int end = int.Parse(input_data[1]);
            int[] visit = new int[200001]; // 0 <= 범위 <= 100000 에서 순간이동 즉  x2 가 가능하기 때문에 2배 크기 선언
            Queue<(int,int)> q_x = new Queue<(int, int)> (); // x축 위치, 이동 횟수
            int result = 0;

            q_x.Enqueue((start,0));

            while(q_x.Count != 0)
            {
                var check_x = q_x.Dequeue();
                int x = check_x.Item1;
                int cnt = check_x.Item2;

                if (x < 0 || x > 100001) continue;
                if (visit[x] == 1) continue;

                visit[x] = 1;

                if (x == end)
                {
                    result = cnt;
                    break;
                }

                q_x.Enqueue((x*2, cnt + 1));
                q_x.Enqueue((x + 1, cnt + 1));
                q_x.Enqueue((x - 1, cnt + 1));
            }
            Console.WriteLine(result);
        }
    }
}

728x90
반응형