프로그래밍

프로그래머스 레벨2 숫자 변환하기 C# (완전탐색)

노마드선샤인 2023. 2. 26. 11:49
728x90

C#

 

 

 

 

using System;

using System.Collections.Generic;

public class Solution {
   public int solution(int x, int y, int n)
        {
            int answer = 0;
            int value = 0;
            int tempValue = 0;
            Queue<int> currentValuesQu = new Queue<int>();
            bool[] visited = new bool[y + 1];

            if (x == y)
                return 0;

            currentValuesQu.Enqueue(x);
       
            while (currentValuesQu.Count != 0)
            {
                int size = currentValuesQu.Count;
                for (int iPos = 0; iPos < size; iPos++)
                {
                    value = currentValuesQu.Dequeue();

                    tempValue = value * 3;
                    if (tempValue <= y && visited[tempValue] == false)
                    {
                        currentValuesQu.Enqueue(tempValue);
                        visited[tempValue] = true;
                    }

                    tempValue = value * 2;
                    if (tempValue <= y && visited[tempValue] == false)
                    {
                        currentValuesQu.Enqueue(tempValue);
                        visited[tempValue] = true;
                    }

                    tempValue = value + n;
                    if (tempValue <= y && visited[tempValue] == false)
                    {
                        currentValuesQu.Enqueue(tempValue);
                        visited[tempValue] = true;
                    }
                }

                answer++;
                if (currentValuesQu.Contains(y))
                    return answer;
            }
            return -1;
        }
}

728x90