C++:: 프로그래머스 <숫자 변환하기>

jahlee·2023년 3월 11일
0

프로그래머스_Lv.2

목록 보기
7/106
post-thumbnail

queue를 이용하여 문제를 풀면된다. 선위에서의 bfs라 생각하면 편하다.

#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(int x, int y, int n)
{
    vector<int> vis(1000001,0);
    queue<int> q;
    q.push(x);
    while (!q.empty())
    {
        int cur = q.front(); q.pop();
        if(cur == y) return vis[cur];//시작하자마자 도착할수도있다.
        int dx[3] = {cur+n, cur*2, cur*3};
        for(int dir=0;dir<3;dir++)
        {
            int nx = dx[dir];
            if(nx > y || vis[nx]!= 0) continue;//범위를 넘어가거나 이미 방문한적 있다면
            vis[nx] = vis[cur] + 1;
            q.push(nx);
        }
    }
    return -1;
}

0개의 댓글