# Random Walk/현민

```~cpp
// 랜덤 워크
#include <iostream>
#include <ctime>
using namespace std;

int main()
{
int i,j,num;
cout << "랜덤 워크를 실행하겠습니다. 숫자를 입력하세요 : ";
cin >> num;

int ** data = new int *[num];
for (i=0; i<num; i++)
data[i] = new int [num];

int dir_x[8]={0,1,1,1,0,-1,-1,-1};
int dir_y[8]={-1,-1,0,1,1,1,0,-1};

int line,col,count=0;	// count는 총 움직인 횟수
srand(time(0));
line = rand() % num ;
col = rand() % num ;

for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
data[i][j] = 0;
}
}

int check=1;

int direction = rand() % 8;
int next_x = col + dir_x[direction];
int next_y = line + dir_y[direction];

while(check>0)
{
direction = rand() % 8; // 랜덤으로 점이 움직이는 방향
next_x = col + dir_x[direction];
next_y = line + dir_y[direction];

check=0;

//벽이 아닐떄
if (next_y >= 0 && next_y < num && next_x >= 0 && next_x < num)
{
line = line + dir_y[direction];
col = col + dir_x[direction];
data[line][col]++;
count++;
}

for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
if(data[i][j] == 0)
check++;
}
}

};
for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
cout << data[i][j] << "\t" ;
}
cout << endl;
}

cout << "총 움직인 횟수는 " << count << "번 입니다.\n";

for(i=0;i<num;i++)
delete [] data [i];
delete [] data;

return 0;
}
```