coding test - C++/기본기문제

[C++] 미로탐색 - DFS 경로 수 구하기

sillon 2026. 9. 29. 00:13
728x90
반응형

- maps 복사할때 &maps 해서 주소 참조 하는거로 진행하기

#include <vector>
#include <string>
#include <iostream>


using namespace std;
vector<vector<int>> arr = {
    {0, 0, 0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1, 1, 0},
    {0, 0, 0, 1, 0, 0, 0},
    {1, 1, 0, 1, 0, 1, 1},
    {1, 1, 0, 0, 0, 0, 1},
    {1, 1, 0, 1, 1, 0, 0},
    {1, 0, 0, 0, 0, 0, 0}
};

int answer  = 0;

void DFS(int x, int y, vector<vector<int>> &maps){

    if (x == 6 && y == 6){
        answer += 1;
        return;
    }

    int dx[4] = {0,0,1,-1};
    int dy[4] = {1,-1,0,0};

    for (int i = 0; i < 4; i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        
        if (nx < 0 || nx >= 7 || ny < 0 || ny >= 7) continue;
        if (maps[ny][nx] == 1) continue;
        maps[ny][nx] = 1;
        DFS(nx,ny,maps);
        maps[ny][nx] = 0;
    }

}

int main(){

    // 출발은 0,0

    // 도착점 6,6
    arr[0][0] = 1;
    DFS(0,0,arr);
    
    cout << answer;

    return 0;
}
728x90
반응형