Hoon222y

배열에서 상하좌우 이동 간단한 코드 본문

코딩/사소한 팁

배열에서 상하좌우 이동 간단한 코드

hoon222y 2016. 8. 4. 12:33

보통 dfs나 bfs를 하면 2차원 배열상에서 이동하는 경우가 생기는데 그때마다 같은 코드를 반복하지 않고 for문으로 해결할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <queue>
 
 
using namespace std;
//4방향 탐색
int dx[4= {0,0,1,-1};
int dy[4= {1,-1,0,0};
int arr[100][100];
int N,M;
queue<pair<int,int>> q;
 
//범위를 벗어나는지 확인해주는 chk
bool chk(int a,int b){
    return 0<&& a<=&& 0<&& b <=M;
}
 
void bfs(){
    
    int y = q.front().first;
    int x = q.front().second;
    q.pop();
    
    //4방향 탐색을 위한 for문
    for(int i=0;i<4;i++){
        if(arr[y+dy[i]][x+dx[i]] == 1 && chk(y+dy[i],x+dx[i])){
            q.push(make_pair(y+dy[i], x+dx[i]));
        }
    }
    
}
cs

[주의점]

1. chk을 통해서 해당 배열의 위치를 벗어나는지 확인

2. dx[],dy[] 배열에 이동할 좌표값을 넣어주고 (3차원일 경우 dz[] 추가) for문으로 간단히 계산


Comments