~cpp #include <iostream> using namespace std; class Inputer{ public: int col, row; // 판 크기 int startx, starty; // 바퀴 시작 좌표 char journey[30]; // 여정 Inputer(){ cout<<"판의 크기 입력하시오: (x y)"; cin>> col >> row; cout<<"바퀴벌레의 초기 위치를 입력하시오: (x y)"; cin >> startx >> starty; cout << "여정을 입력하십시오. : "; cin >> journey; } }; class Board{ public: int* BoardArray; int maxCol, maxRow; Board (int col, int row) { maxCol = col; maxRow = row; BoardArray = new int[row * col + row]; for (int i = 0 ; i < col ; i++) for (int j = 0 ; j < row ; j++) BoardArray[i * row + j] = 0; } void start(int x, int y, char* journey) { int move[8][2]={{0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}}; char CurrentMove; for (int check, direction, i=0 ; check != maxRow * maxCol && CurrentMove != '' ; i++) { if (i != 0) { x+=move[direction][0]; y+=move[direction][1]; } if (x == -1) x = maxCol - 1; if (y == -1) y = maxRow - 1; if (x == maxCol) x = 0; if (y == maxRow) y = 0; BoardArray[y * maxRow + x]++; check=0; for (int j = 0 ; j < maxRow * maxCol ; j++) // 빈 셀이 있는지 확인 if (BoardArray[j] != 0) check++; CurrentMove = journey[i]; direction = (CurrentMove - '0') % 8; // 다음 이동 방향 받기 } } void print() { int count = 0; for (int i = 0 ; i < maxCol ; i++) { for (int j = 0 ; j < maxRow ; j++) { cout.width(4); cout << BoardArray[i * maxRow + j]; count += BoardArray[i * maxRow + j]; } cout << endl; } cout << "총 이동횟수 : " << count - 1 << endl; } }; int main() { Inputer inputer; Board* board = new Board(inputer.row, inputer.col); board->start(inputer.startx, inputer.starty, inputer.journey); board->print(); return 0; }