# Random Walk2/현민

```~cpp
#include <iostream>
using namespace std;

int main()
{
int M,N,i,j;
cout << "행과 열의 크기를 입력해 주십시오 : ";
cin >> M >> N;
int **board = new int *[M];
for (i=0; i<M; i++)
board[i] = new int [N];

for (i=0; i<M; i++)
for (j=0; j<N; j++)
board[i][j] = 0;

cout << "처음 시작할 위치의 좌표를 입력해 주십시오 : ";
int start_x, start_y;
cin >> start_x >> start_y;

cout << "이동할 행로들을 입력하십시오 : ";
char ch[100];
cin.get();
cin.getline(ch,100);
int num = strlen(ch);
char *A = new char [num+1];
for (i=0; i<num+1; i++)
A[i] = '0';

int *route = new int[num+1];
for (i=0; i<num+1; i++)
{
A[i] = ch[i];
route[i] = A[i] - 48;
}

int walker_x[8] = {0,1,1,1,0,-1,-1,-1};
int walker_y[8] = {-1,-1,0,1,1,1,0,-1};

int next_x = start_x - 1, next_y = start_y - 1;
i=0;
int check = 1;
int count = 0;
while (A[i]!='\0' && check > 0)
{
check = 0;
next_x = next_x + walker_x[route[i]];
next_y = next_y + walker_y[route[i]];
if (next_x == -1)
next_x = N-1;
if (next_x == N)
next_x = 0;
if (next_y == -1)
next_y = M-1;
if (next_y == M)
next_y = 0;
board[next_y][next_x]++; count++;
i++;

for (int a=0; a<M; a++)
{
for (int b=0; b<N; b++)
{
if(board[a][b] == 0)
check++;
}
}

}

cout << "총 움직인 횟수는 " << count << "번 입니다.\n\n";
for (i=0; i<M; i++)
{
for (j=0; j<N; j++)
{
cout << board[i][j] << " ";
}
cout << endl;

}

return 0;

}
```
last modified 2021-02-07 05:27:51
Processing time 0.0060 sec