문제

문제 풀이
using System;
using System.Collections.Generic;
public class Solution {
public int solution(int x, int y, int n)
{
Queue<Tuple<int, int>> queue = new Queue<Tuple<int, int>>();
queue.Enqueue(new Tuple<int, int>(x, 0));
bool[] visited = new bool[y + 1];
visited[x] = true;
while (queue.Count > 0)
{
var current = queue.Dequeue();
int value = current.Item1;
int steps = current.Item2;
if (value == y)
{
return steps;
}
if (value + n <= y && !visited[value + n])
{
visited[value + n] = true;
queue.Enqueue(new Tuple<int, int>(value + n, steps + 1));
}
if (value * 2 <= y && !visited[value * 2])
{
visited[value * 2] = true;
queue.Enqueue(new Tuple<int, int>(value * 2, steps + 1));
}
if (value * 3 <= y && !visited[value * 3])
{
visited[value * 3] = true;
queue.Enqueue(new Tuple<int, int>(value * 3, steps + 1));
}
}
return -1;
}
}