[프로그래머스]

[프로그래머스] 숫자 변환하기 C++

Hevton 2024. 3. 22. 22:41
반응형

 

 

다시 풀었는데, 옛날이랑 똑같이 풀었다 ㅋㅋ

#include <string>
#include <vector>
#include <queue>

using namespace std;

bool visit[1000001];

int bfs(int x, int y, int n) {
    
    queue<pair<int, int>> que;
    
    que.push({x, 0});
    visit[x] = true;
    
    while(!que.empty()) {
        int value = que.front().first;
        int depth = que.front().second;
        que.pop();
        
        if(value == y) return depth;
        
        if(value + n <= y && !visit[value + n]) {
            que.push({value + n, depth + 1});
            visit[value + n] = true;
        }
        if(value * 2 <= y && !visit[value * 2]) {
            que.push({value * 2, depth + 1});
            visit[value * 2] = true;
        }
        if(value * 3 <= y && !visit[value * 3]) {
            que.push({value * 3, depth + 1});
            visit[value * 3] = true;
        }
    }
    return -1;
}

int solution(int x, int y, int n) {
    
    
    return bfs(x, y, n);
}
반응형