Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DP
- 그리디 알고리즘
- 비트마스크
- 백트레킹
- 안드로이드 스튜디오
- 다음 지도 api
- 삼성 코딩테스트
- 다이나믹 프로그래밍
- BOJ 2098
- yolo
- 다음 API
- multiset
- 성화봉송주자
- 언어의 온도
- 인간이 그리는 무늬
- 창훈쓰다
- MST
- boj
- 외판원 순회
- 이분탐색
- upper_bound
- BFS
- lower_bound
- 캘리그라피
- 영어회화 100일의 기적
- 평창동계올림픽
- 성화봉송
- Segment Tree
- 생활코딩
- 위상정렬
Archives
- Today
- Total
Hoon222y
배열에서 상하좌우 이동 간단한 코드 본문
보통 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 && a<=N && 0<b && 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문으로 간단히 계산
'코딩 > 사소한 팁' 카테고리의 다른 글
BFS 반복 횟수 카운트 (2) | 2017.02.21 |
---|---|
string 띄어쓰기도 입력받기 (0) | 2016.08.08 |
string 아스키 코드 관련 팁 (0) | 2016.08.02 |
string과 아스키 코드 관련 팁 (처음알았네 ... ) (0) | 2016.08.01 |
문자열 입력 팁 (0) | 2016.07.09 |
Comments