답이 완전히 나오긴 했는데요.... 실제 의도와 똑같이 되지 않은 것이 흠이네요...ㅠ.ㅠ {{{~cpp import java.util.*; public class s1{ public static void main(String[] args) { Board board = new Board(); Roach roach = new Roach(); Observer observer = new Observer(); int xRoach = 1 , yRoach = 1; int tempX = 0, tempY = 0; for (;observer.checkQuit() == true;){ tempX = xRoach + roach.moveSide(); tempY = yRoach + roach.moveUpandDown(); if ( board.boardState(tempX, tempY) == true ) { observer.checkStay(tempX-1, tempY-1); xRoach = tempX; yRoach = tempY; } else continue; } observer.output(); } } class Board{ private boolean board_[][] = new boolean [12][12]; public Board() { for (int i = 0 ; i <= 11 ; i++){ for (int j = 0 ; j <= 11 ; j++){ board_[i][j] = false; } } for (int k = 1 ; k <= 10 ; k++){ for (int l = 1 ; l <= 10 ; l++){ board_[k][l] = true; } } } public boolean boardState(int x , int y ) { if ( board_[x][y] == true ) return true; else return false; } } class Roach{ Random rand = new Random(); public int randomNumber_1() { return rand.nextInt(10000); } public int randomNumber_2() { return rand.nextInt(40000); } public int moveUpandDown() { return (randomNumber_1()%3)-1; // -1 is left, 1 is right. } public int moveSide() { return (randomNumber_2()%3)-1; // -1 is up, 1 is down. } } class Observer{ private int boardCount[][] = new int [10][10]; public Observer() { for (int i = 0 ; i <= 9 ; i++){ for (int j = 0 ; j <= 9 ; j++){ boardCount[i][j] = 0; } } } public void checkStay(int x, int y) { boardCount[x][y] = boardCount[x][y] + 1; } public void output() { for (int i = 0 ; i <= 9 ; i++){ for (int j = 0 ; j <= 9 ; j++){ System.out.print(boardCount[i][j] + " "); } System.out.println(); } } public boolean checkQuit() { for (int i = 0 ; i <= 9 ; i++){ for (int j = 0 ; j <= 9 ; j++){ if ( boardCount[i][j] == 0 ) return true; } } return false; } } }}} ---- ["JavaStudy2002"]