[CodeUp] #2610-그림판 채우기 (DFS/BFS)

chrmqgozj·2022년 1월 17일
0

CodeUp

목록 보기
1/48
#include <iostream>
#include <vector>
using namespace std;

vector<vector<char>> map;
vector<vector<int>> v;
int d[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};

int safe(int x, int y){
    if(x>=0 && x<10 && y>=0 && y<10){
        if(!v[y][x]){
            return 1;
        }
    }
    return 0;
}

void dfs(int x, int y){
    for(int i=0;i<4;i++){
        int xx = x + d[i][0];
        int yy = y + d[i][1];
        if(safe(xx,yy) && map[yy][xx] == '_'){
            map[yy][xx] = '*';
            v[yy][xx] = 1;
            dfs(xx,yy);
        }
    }
    return;
}

int main(){
    map.resize(11,vector<char>(11,'_'));
    v.resize(11,vector<int>(11,0));

    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            cin >> map[i][j];
        }
    }

    int x,y;
    cin >> x >> y;

    if(map[y][x] == '_'){
        v[y][x] = 1;
        map[y][x] = '*';
        dfs(x,y);
    }

    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            cout << map[i][j];
        }
        cout << "\n";
    }

}

0개의 댓글

관련 채용 정보