BFS 문제에서 깔끔하게 2차원 배열 안을 탐색하기

less than 1 minute read

이 것 역시 컴퓨터가 이해하기 쉬운 방식으로 구현하면 코드 역시 간단해진다. 바로 코드를 살펴보자.

#include <stdio.h>  
  
int direct[5][2] = {  
	-1, -1,  
	-1, 1,  
	1, 1,  
	1, -1,  
	0, 0  
};  
  
int map[4][4] = {  
	1, 2, 1, 1,  
	3, 2, 1, 2,  
	1, 2, 3, 5,  
	1, 2, 1, 1  
};  
  
int main(void) {  
	int dy, dx;  
	int sum = 0;  
	int a = 3;  
	int b = 3;  
  
	for (int t = 0; t < 5; t++) {  
		dy = a + direct[t][0];  
		dx = b + direct[t][1];  
  
		if (dy >= 0 && dy < 4 && dx >= 0 && dx < 4) {  
			sum += map[dy][dx];  
		}  
	}  
  
	return 0;  
}  

코드를 보면 알다시피 맵의 값들을 더하는 내용이다. 은근히 이런 류가 예외처리가 까다로운데 이런 포맷을 사용하면 상당히 코드가 깔끔해진다.