C# 백준 1696번 문제 숨바꼭질
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);
}
}
}