<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=RandomWalk2%2F%EC%9E%AC%EB%8F%99</id>
	<title>RandomWalk2/재동 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=RandomWalk2%2F%EC%9E%AC%EB%8F%99"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=RandomWalk2/%EC%9E%AC%EB%8F%99&amp;action=history"/>
	<updated>2026-05-14T13:48:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=RandomWalk2/%EC%9E%AC%EB%8F%99&amp;diff=38337&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:27, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=RandomWalk2/%EC%9E%AC%EB%8F%99&amp;diff=38337&amp;oldid=prev"/>
		<updated>2021-02-07T05:27:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== RandomWalk2 ==&lt;br /&gt;
=== 기본적 요구사항만 만족 버전 ===&lt;br /&gt;
 ~cpp RandomWalk2.py&lt;br /&gt;
 import unittest, random, os.path&lt;br /&gt;
 &lt;br /&gt;
 class ReaderTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.reader = Reader()&lt;br /&gt;
         self.reader.readTXT(&amp;#039;case_0.txt&amp;#039;)&lt;br /&gt;
         &lt;br /&gt;
     def testCreateReaderClass(self):&lt;br /&gt;
         self.assert_(self.reader)&lt;br /&gt;
         &lt;br /&gt;
     def testReadTXT(self):&lt;br /&gt;
         self.assertEquals(&amp;#039;5 5\n&amp;#039;,self.reader.getData()[0])&lt;br /&gt;
         self.assertEquals(&amp;#039;22224444346\n&amp;#039;,self.reader.getData()[2])&lt;br /&gt;
         &lt;br /&gt;
     def testBoardLength(self):&lt;br /&gt;
         self.assertEquals((5,5),self.reader.getBoardLength())&lt;br /&gt;
         &lt;br /&gt;
     def testStartPoint(self):&lt;br /&gt;
         self.assertEquals((0,0),self.reader.getStartPoint())&lt;br /&gt;
         &lt;br /&gt;
     def testRoachPath(self):&lt;br /&gt;
         expectPath = [2,2,2,2,4,4,4,4,3,4,6]&lt;br /&gt;
         self.assertEquals(expectPath,self.reader.getPath())&lt;br /&gt;
         &lt;br /&gt;
 class BoardTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.board = Board()&lt;br /&gt;
         &lt;br /&gt;
     def testCreateBoardClass(self):&lt;br /&gt;
         self.assert_(self.board)&lt;br /&gt;
         &lt;br /&gt;
     def testSetBoard(self):&lt;br /&gt;
         expectBoard = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]&lt;br /&gt;
         self.board.readTXT(&amp;#039;case_0.txt&amp;#039;)&lt;br /&gt;
         self.board.initializeBoard()&lt;br /&gt;
         self.assertEquals(expectBoard,self.board.getBoard())&lt;br /&gt;
         &lt;br /&gt;
 class MoveRoachTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         TXT = &amp;#039;case_0.txt&amp;#039;&lt;br /&gt;
         &lt;br /&gt;
         self.board = Board()&lt;br /&gt;
         self.board.readTXT(TXT)&lt;br /&gt;
         self.board.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
         self.moveRoach = MoveRoach()&lt;br /&gt;
         self.moveRoach.readTXT(TXT)&lt;br /&gt;
         self.moveRoach.setBoard(self.board.getBoard())&lt;br /&gt;
     def testCreateMoveRoachCalss(self):&lt;br /&gt;
         self.assert_(self.moveRoach)&lt;br /&gt;
         &lt;br /&gt;
     def testMoveRoach(self):&lt;br /&gt;
         expectBoard = [[2,1,1,1,1],[1,0,0,0,2],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,0,1]]&lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.board.setBoard(self.moveRoach.getBoard())&lt;br /&gt;
         self.assertEquals(expectBoard,self.board.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testCount(self):&lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.assertEquals(11,self.moveRoach.getCount())&lt;br /&gt;
         &lt;br /&gt;
 class AllCaseTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.board = Board()&lt;br /&gt;
         self.moveRoach = MoveRoach()&lt;br /&gt;
         self.expectBoard = [[[2,1,1,1,1],[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],\&lt;br /&gt;
                        [[5,0,0,0,0],[4,0,0,0,0],[4,0,0,0,0],[4,0,0,0,0],[4,0,0,0,0]],\&lt;br /&gt;
                         [[1,1,1],[1,1,1],[1,1,1]]]&lt;br /&gt;
         &lt;br /&gt;
     def testAllCase(self):&lt;br /&gt;
         for i in range(3):&lt;br /&gt;
             TXT = &amp;#039;case_&amp;#039; + str(i+1) +&amp;#039;.txt&amp;#039;&lt;br /&gt;
             self.board.readTXT(TXT)&lt;br /&gt;
             self.board.initializeBoard()&lt;br /&gt;
             self.moveRoach.readTXT(TXT)&lt;br /&gt;
             self.moveRoach.setBoard(self.board.getBoard())&lt;br /&gt;
             &lt;br /&gt;
             self.moveRoach.move()&lt;br /&gt;
             self.board.setBoard(self.moveRoach.getBoard())&lt;br /&gt;
             self.assertEquals(self.expectBoard[i],self.board.getBoard())&lt;br /&gt;
             &lt;br /&gt;
 class Reader:&lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         file = open(os.path.join(TXT))&lt;br /&gt;
         self.data = file.readlines()&lt;br /&gt;
         &lt;br /&gt;
     def getData(self):&lt;br /&gt;
         return self.data&lt;br /&gt;
     &lt;br /&gt;
     def getBoardLength(self):&lt;br /&gt;
         rowLength = int(self.data[0].split()[0])&lt;br /&gt;
         colLength = int(self.data[0].split()[1])&lt;br /&gt;
         return rowLength,colLength&lt;br /&gt;
     &lt;br /&gt;
     def getStartPoint(self):&lt;br /&gt;
         row = int(self.data[1].split()[0])&lt;br /&gt;
         col = int(self.data[1].split()[1])&lt;br /&gt;
         return row,col&lt;br /&gt;
     &lt;br /&gt;
     def getPath(self):&lt;br /&gt;
         path = []&lt;br /&gt;
         i = 0&lt;br /&gt;
         while self.data[2][i] != &amp;#039;\n&amp;#039;:&lt;br /&gt;
             path.append(int(self.data[2][i]))&lt;br /&gt;
             i += 1&lt;br /&gt;
         return path&lt;br /&gt;
 &lt;br /&gt;
 class Board:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.reader = Reader()&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.reader.readTXT(TXT)&lt;br /&gt;
         &lt;br /&gt;
     def initializeBoard(self):&lt;br /&gt;
         self.row, self.col = self.reader.getBoardLength()&lt;br /&gt;
         self.board = [[0 for i in range(self.col)] for j in range(self.row)]&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
         &lt;br /&gt;
     def printBoard(self):&lt;br /&gt;
         for row in range(self.row):&lt;br /&gt;
             for col in range(self.col):&lt;br /&gt;
                 print self.board[row][col],&amp;#039; &amp;#039;,&lt;br /&gt;
             print&lt;br /&gt;
         print&lt;br /&gt;
         &lt;br /&gt;
 class MoveRoach:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.dirNumber = {0:(-1,0),1:(-1,1),2:(0,1),3:(1,1),4:(1,0),5:(1,-1),6:(0,-1),7:(-1,-1)}&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         self.count = 0&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.rdr.readTXT(TXT)&lt;br /&gt;
         self.brd.readTXT(TXT)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
 &lt;br /&gt;
     def setStartPoint(self):&lt;br /&gt;
         self.row, self.col = self.rdr.getStartPoint()&lt;br /&gt;
         self.board[self.row][self.col] += 1&lt;br /&gt;
         &lt;br /&gt;
     def move(self):&lt;br /&gt;
         self.setStartPoint()&lt;br /&gt;
         self.path = self.rdr.getPath()&lt;br /&gt;
         &lt;br /&gt;
         for i in range(len(self.path)):            &lt;br /&gt;
             move_row, move_col = self.dirNumber[self.path[i]]&lt;br /&gt;
             self.row += move_row&lt;br /&gt;
             self.col += move_col&lt;br /&gt;
             self.checkOutOfBoard()&lt;br /&gt;
             self.board[self.row][self.col] += 1&lt;br /&gt;
             self.count += 1&lt;br /&gt;
             if self.isMoveAllCell():&lt;br /&gt;
                 break&lt;br /&gt;
             &lt;br /&gt;
     def isMoveAllCell(self):&lt;br /&gt;
         cellCount = 0&lt;br /&gt;
         for i in range(self.rowLength):&lt;br /&gt;
             for j in range(self.colLength):&lt;br /&gt;
                 if self.board[i][j] != 0:&lt;br /&gt;
                     cellCount += 1&lt;br /&gt;
         if cellCount != self.rowLength * self.colLength:&lt;br /&gt;
             return False&lt;br /&gt;
         else:&lt;br /&gt;
             return True&lt;br /&gt;
 &lt;br /&gt;
     def checkOutOfBoard(self):&lt;br /&gt;
         self.rowLength, self.colLength = self.rdr.getBoardLength()&lt;br /&gt;
         if self.row &amp;amp;lt; 0:&lt;br /&gt;
             self.row = self.rowLength - 1&lt;br /&gt;
         if self.col &amp;amp;lt; 0:&lt;br /&gt;
             self.col = self.colLength - 1&lt;br /&gt;
         if self.row &amp;amp;gt;= self.rowLength:&lt;br /&gt;
             self.row = 0&lt;br /&gt;
         if self.col &amp;amp;gt;= self.colLength:&lt;br /&gt;
             self.col = 0    &lt;br /&gt;
         &lt;br /&gt;
     def getCount(self):&lt;br /&gt;
         return self.count&lt;br /&gt;
     &lt;br /&gt;
     def printCount(self):&lt;br /&gt;
         print self.count,&amp;#039;\n\n&amp;#039;&lt;br /&gt;
         &lt;br /&gt;
 if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
     #unittest.main()&lt;br /&gt;
     TXT = &amp;#039;input.TXT&amp;#039;&lt;br /&gt;
     board = Board()&lt;br /&gt;
     moveRoach = MoveRoach()&lt;br /&gt;
     board.readTXT(TXT)&lt;br /&gt;
     board.initializeBoard()&lt;br /&gt;
     moveRoach.readTXT(TXT)&lt;br /&gt;
     moveRoach.setBoard(board.getBoard())&lt;br /&gt;
     moveRoach.move()&lt;br /&gt;
     board.setBoard(moveRoach.getBoard())&lt;br /&gt;
     moveRoach.printCount()&lt;br /&gt;
     board.printBoard()&lt;br /&gt;
=== 요구사항1 만족 버전 ===&lt;br /&gt;
 import unittest, random, os.path&lt;br /&gt;
 &lt;br /&gt;
 class ReaderTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         self.rdr.readTXT(&amp;#039;case2_0.txt&amp;#039;)&lt;br /&gt;
         &lt;br /&gt;
     def testCreaterdrClass(self):&lt;br /&gt;
         self.assert_(self.rdr)&lt;br /&gt;
         &lt;br /&gt;
     def testReadTXT(self):&lt;br /&gt;
         self.assertEquals(&amp;#039;10 10\n&amp;#039;,self.rdr.getData()[0])&lt;br /&gt;
         self.assertEquals(&amp;#039;22222444445\n&amp;#039;,self.rdr.getData()[2])&lt;br /&gt;
         self.assertEquals(&amp;#039;121212645372\n&amp;#039;,self.rdr.getData()[4])&lt;br /&gt;
     &lt;br /&gt;
     def testbrdLength(self):&lt;br /&gt;
         self.assertEquals((10,10),self.rdr.getBoardLength())&lt;br /&gt;
         &lt;br /&gt;
     def testStartPoint(self):&lt;br /&gt;
         self.assertEquals((0,0,3,7),self.rdr.getStartPoint())&lt;br /&gt;
         &lt;br /&gt;
     def testRoachPath(self):&lt;br /&gt;
         expectPath = [[2,2,2,2,2,4,4,4,4,4,5],[1,2,1,2,1,2,6,4,5,3,7,2]]&lt;br /&gt;
         self.assertEquals(expectPath,self.rdr.getPath())&lt;br /&gt;
     &lt;br /&gt;
 class BoardTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         &lt;br /&gt;
     def testCreateBoardClass(self):&lt;br /&gt;
         self.assert_(self.brd)&lt;br /&gt;
         &lt;br /&gt;
     def testSetBoard(self):&lt;br /&gt;
         expectboard = [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0]]&lt;br /&gt;
         self.brd.readTXT(&amp;#039;case2_0.txt&amp;#039;)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         self.assertEquals(expectboard,self.brd.getBoard())&lt;br /&gt;
         &lt;br /&gt;
 class MoveRoachTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         TXT = &amp;#039;case2_0.txt&amp;#039;&lt;br /&gt;
         &lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         self.brd.readTXT(TXT)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
         self.moveRoach = MoveRoach()&lt;br /&gt;
         self.moveRoach.readTXT(TXT)&lt;br /&gt;
         self.moveRoach.setBoard(self.brd.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testCreateMoveRoachClass(self):&lt;br /&gt;
         self.assert_(self.moveRoach)&lt;br /&gt;
         &lt;br /&gt;
     def testMoveRoach(self):&lt;br /&gt;
         expectBoard = [[1,1,3,2,1,1,0,0,0,0],\&lt;br /&gt;
                        [1,1,1,0,0,1,0,0,0,0],\&lt;br /&gt;
                        [0,2,1,0,0,1,0,0,1,1],\&lt;br /&gt;
                        [0,0,1,0,0,1,0,1,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,1,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,1,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,1,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0]]&lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.brd.setBoard(self.moveRoach.getBoard())&lt;br /&gt;
         self.assertEquals(expectBoard,self.brd.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testCount(self):&lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.assertEquals((11,12),self.moveRoach.getCount())&lt;br /&gt;
         &lt;br /&gt;
 class Reader:&lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         file = open(os.path.join(TXT))&lt;br /&gt;
         self.data = file.readlines()&lt;br /&gt;
         &lt;br /&gt;
     def getData(self):&lt;br /&gt;
         return self.data&lt;br /&gt;
     &lt;br /&gt;
     def getBoardLength(self):&lt;br /&gt;
         rowLength = int(self.data[0].split()[0])&lt;br /&gt;
         colLength = int(self.data[0].split()[1])&lt;br /&gt;
         return rowLength,colLength&lt;br /&gt;
     &lt;br /&gt;
     def getStartPoint(self):&lt;br /&gt;
         row = [0,0]&lt;br /&gt;
         col = [0,0]&lt;br /&gt;
         for who in range(2):            &lt;br /&gt;
             row[who] = int(self.data[who*2+1].split()[0])&lt;br /&gt;
             col[who] = int(self.data[who*2+1].split()[1])&lt;br /&gt;
         return row[0],col[0],row[1],col[1]&lt;br /&gt;
     &lt;br /&gt;
     def getPath(self):&lt;br /&gt;
         path = [[],[]]&lt;br /&gt;
         for who in range(2):&lt;br /&gt;
             i = 0&lt;br /&gt;
             while self.data[who*2+2][i] != &amp;#039;\n&amp;#039;:&lt;br /&gt;
                 path[who].append(int(self.data[who*2+2][i]))&lt;br /&gt;
                 i += 1&lt;br /&gt;
         return path&lt;br /&gt;
     &lt;br /&gt;
 class Board:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.rdr.readTXT(TXT)&lt;br /&gt;
         &lt;br /&gt;
     def initializeBoard(self):&lt;br /&gt;
         self.row, self.col = self.rdr.getBoardLength()&lt;br /&gt;
         self.board = [[0 for i in range(self.col)] for j in range(self.row)]&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
         &lt;br /&gt;
     def printBoard(self):&lt;br /&gt;
         for row in range(self.row):&lt;br /&gt;
             for col in range(self.col):&lt;br /&gt;
                 print self.board[row][col],&amp;#039; &amp;#039;,&lt;br /&gt;
             print&lt;br /&gt;
         print&lt;br /&gt;
         &lt;br /&gt;
 class MoveRoach:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.dirNumber = {0:(-1,0),1:(-1,1),2:(0,1),3:(1,1),4:(1,0),5:(1,-1),6:(0,-1),7:(-1,-1)}&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         &lt;br /&gt;
         self.count = [0,0]&lt;br /&gt;
         self.row = [0,0]&lt;br /&gt;
         self.col = [0,0]&lt;br /&gt;
         self.path = [0,0]&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.rdr.readTXT(TXT)&lt;br /&gt;
         self.brd.readTXT(TXT)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
 &lt;br /&gt;
     def setStartPoint(self):&lt;br /&gt;
         self.row[0], self.col[0], self.row[1], self.col[1] = self.rdr.getStartPoint()&lt;br /&gt;
         for who in range(2):&lt;br /&gt;
             self.board[self.row[who]][self.col[who]] += 1&lt;br /&gt;
 &lt;br /&gt;
     def move(self):&lt;br /&gt;
         self.setStartPoint()&lt;br /&gt;
         for who in range(2):        &lt;br /&gt;
             self.path[who] = self.rdr.getPath()[who]&lt;br /&gt;
         self.time = self.getTime()&lt;br /&gt;
         &lt;br /&gt;
         for i in range(self.time):&lt;br /&gt;
             for who in range(2):&lt;br /&gt;
                 if self.count[who] &amp;amp;lt; len(self.path[who]):&lt;br /&gt;
                     move_row, move_col = self.dirNumber[self.path[who][i]]&lt;br /&gt;
                     self.row[who] += move_row&lt;br /&gt;
                     self.col[who] += move_col&lt;br /&gt;
                     self.checkOutOfbrd()&lt;br /&gt;
                     self.board[self.row[who]][self.col[who]] += 1&lt;br /&gt;
                     self.count[who] += 1&lt;br /&gt;
                     &lt;br /&gt;
             if self.isMoveAllCell():&lt;br /&gt;
                 break&lt;br /&gt;
             &lt;br /&gt;
     def getTime(self):&lt;br /&gt;
         if len(self.path) &amp;amp;gt; len(self.path[0]):&lt;br /&gt;
             return len(self.path[0])&lt;br /&gt;
         else:&lt;br /&gt;
             return len(self.path[1])&lt;br /&gt;
             &lt;br /&gt;
     def isMoveAllCell(self):&lt;br /&gt;
         cellCount = 0&lt;br /&gt;
         for i in range(self.rowLength):&lt;br /&gt;
             for j in range(self.colLength):&lt;br /&gt;
                 if self.board[i][j] != 0:&lt;br /&gt;
                     cellCount += 1&lt;br /&gt;
         if cellCount != self.rowLength * self.colLength:&lt;br /&gt;
             return False&lt;br /&gt;
         else:&lt;br /&gt;
             return True&lt;br /&gt;
 &lt;br /&gt;
     def checkOutOfbrd(self):&lt;br /&gt;
         self.rowLength, self.colLength = self.rdr.getBoardLength()&lt;br /&gt;
 &lt;br /&gt;
         for i in range(len(self.row)):&lt;br /&gt;
             if self.row[i] &amp;amp;lt; 0:&lt;br /&gt;
                 self.row[i] = self.rowLength - 1&lt;br /&gt;
             if self.row[i] &amp;amp;gt;= self.rowLength:&lt;br /&gt;
                 self.row[i] = 0&lt;br /&gt;
                 &lt;br /&gt;
         for j in range(len(self.col)):&lt;br /&gt;
             if self.col[j] &amp;amp;lt; 0:&lt;br /&gt;
                 self.col[j] = self.colLength - 1&lt;br /&gt;
             if self.col[j] &amp;amp;gt;= self.colLength:&lt;br /&gt;
                 self.col[j] = 0&lt;br /&gt;
         &lt;br /&gt;
     def getCount(self):&lt;br /&gt;
         return self.count[0],self.count[1]&lt;br /&gt;
     &lt;br /&gt;
     def printCount(self):&lt;br /&gt;
         for i in range(len(self.count)):&lt;br /&gt;
             print self.count[i],&amp;#039;\n&amp;#039;&lt;br /&gt;
         &lt;br /&gt;
 if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
     #unittest.main()&lt;br /&gt;
     TXT = &amp;#039;input_2.TXT&amp;#039;&lt;br /&gt;
     brd = Board()&lt;br /&gt;
     moveRoach = MoveRoach()&lt;br /&gt;
     brd.readTXT(TXT)&lt;br /&gt;
     brd.initializeBoard()&lt;br /&gt;
     moveRoach.readTXT(TXT)&lt;br /&gt;
     moveRoach.setBoard(brd.getBoard())&lt;br /&gt;
     moveRoach.move()&lt;br /&gt;
     brd.setBoard(moveRoach.getBoard())&lt;br /&gt;
     moveRoach.printCount()&lt;br /&gt;
     brd.printBoard()&lt;br /&gt;
=== 요구사항2 만족 버전 ===&lt;br /&gt;
 import unittest, os.path&lt;br /&gt;
 &lt;br /&gt;
 class ReaderTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         self.rdr.readTXT(&amp;#039;case3_0.txt&amp;#039;)&lt;br /&gt;
         &lt;br /&gt;
     def testCreaterdrClass(self):&lt;br /&gt;
         self.assert_(self.rdr)&lt;br /&gt;
         &lt;br /&gt;
     def testReadTXT(self):&lt;br /&gt;
         self.assertEquals(&amp;#039;10 10\n&amp;#039;,self.rdr.getData()[0])&lt;br /&gt;
         self.assertEquals(&amp;#039;57575757575757575757\n&amp;#039;,self.rdr.getData()[6])&lt;br /&gt;
     &lt;br /&gt;
     def testbrdLength(self):&lt;br /&gt;
         self.assertEquals((10,10),self.rdr.getBoardLength())&lt;br /&gt;
         &lt;br /&gt;
     def testStartPointRow(self):&lt;br /&gt;
         self.assertEquals([0,3,2,8],self.rdr.getStartPointRow())&lt;br /&gt;
         &lt;br /&gt;
     def testStartPointCol(self):&lt;br /&gt;
         self.assertEquals([0,7,5,8],self.rdr.getStartPointCol())&lt;br /&gt;
         &lt;br /&gt;
     def testRoachPath(self):&lt;br /&gt;
         expectPath = [[2,2,2,2,2,4,4,4,4,4,5],[1,2,1,2,1,2,6,4,5,3,7,2],\&lt;br /&gt;
                       [5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7],[6,6,3]]&lt;br /&gt;
         self.assertEquals(expectPath,self.rdr.getPath())&lt;br /&gt;
         &lt;br /&gt;
     def testCountRoachNumber(self):&lt;br /&gt;
         expectRoachNumber = 4&lt;br /&gt;
         self.assertEquals(expectRoachNumber,self.rdr.getRoachNumber())&lt;br /&gt;
         &lt;br /&gt;
 class BoardTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         &lt;br /&gt;
     def testCreateBoardClass(self):&lt;br /&gt;
         self.assert_(self.brd)&lt;br /&gt;
         &lt;br /&gt;
     def testInitializeBoard(self):&lt;br /&gt;
         expectboard = [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0]]&lt;br /&gt;
         self.brd.readTXT(&amp;#039;case3_0.txt&amp;#039;)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         self.assertEquals(expectboard,self.brd.getBoard())&lt;br /&gt;
 &lt;br /&gt;
 class MoveRoachTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         TXT = &amp;#039;case3_0.txt&amp;#039;&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         self.brd.readTXT(TXT)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
         self.moveRoach = MoveRoach()&lt;br /&gt;
         self.moveRoach.readTXT(TXT)&lt;br /&gt;
         self.moveRoach.setBoard(self.brd.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testCreateMoveRoachClass(self):&lt;br /&gt;
         self.assert_(self.moveRoach)&lt;br /&gt;
 &lt;br /&gt;
     def testStartPoint(self):&lt;br /&gt;
         self.moveRoach.setStartPoint()&lt;br /&gt;
         self.assertEquals(1,self.moveRoach.getBoard()[0][0])&lt;br /&gt;
         self.assertEquals(1,self.moveRoach.getBoard()[3][7])&lt;br /&gt;
         &lt;br /&gt;
     def testGetTime(self):&lt;br /&gt;
         expectTime = 20&lt;br /&gt;
         self.moveRoach.setPath()&lt;br /&gt;
         self.assertEquals(expectTime,self.moveRoach.getTime())&lt;br /&gt;
         &lt;br /&gt;
     def testIsMoveAllCell(self):&lt;br /&gt;
         board = [[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]&lt;br /&gt;
         self.moveRoach.setBoard(board)&lt;br /&gt;
         self.assertEquals(True,self.moveRoach.isMoveAllCell())&lt;br /&gt;
         &lt;br /&gt;
     def testMoveRoach(self):    &lt;br /&gt;
         expectBoard = [[1,1,3,2,1,1,0,0,0,0],[1,1,1,0,0,1,0,0,0,0],\&lt;br /&gt;
                        [0,4,1,2,0,4,0,2,1,3],[2,0,3,0,2,1,2,1,2,0],\&lt;br /&gt;
                        [0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,1,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],\&lt;br /&gt;
                        [0,0,0,0,0,0,1,1,1,0],[0,0,0,0,0,0,0,1,0,0]]&lt;br /&gt;
         &lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.assertEquals(expectBoard,self.moveRoach.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testGetCount(self):&lt;br /&gt;
         expectCount = [11, 12, 20, 3]&lt;br /&gt;
         self.moveRoach.move()&lt;br /&gt;
         self.assertEquals(expectCount,self.moveRoach.getCount())&lt;br /&gt;
         &lt;br /&gt;
 class Reader:&lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         file = open(os.path.join(TXT))&lt;br /&gt;
         self.data = file.readlines()&lt;br /&gt;
         &lt;br /&gt;
     def getData(self):&lt;br /&gt;
         return self.data&lt;br /&gt;
     &lt;br /&gt;
     def getBoardLength(self):&lt;br /&gt;
         rowLength = int(self.data[0].split()[0])&lt;br /&gt;
         colLength = int(self.data[0].split()[1])&lt;br /&gt;
         return rowLength,colLength&lt;br /&gt;
     &lt;br /&gt;
     def getStartPointRow(self):&lt;br /&gt;
         row = [0 for i in range(self.getRoachNumber())]&lt;br /&gt;
         for who in range(self.roachNumber):&lt;br /&gt;
             row[who] = int(self.data[who*2+1].split()[0])&lt;br /&gt;
         return row&lt;br /&gt;
     &lt;br /&gt;
     def getStartPointCol(self):&lt;br /&gt;
         col = [0 for i in range(self.getRoachNumber())]&lt;br /&gt;
         for who in range(self.roachNumber):&lt;br /&gt;
             col[who] = int(self.data[who*2+1].split()[1])&lt;br /&gt;
         return col&lt;br /&gt;
     &lt;br /&gt;
     def getPath(self):&lt;br /&gt;
         path = [[] for i in range(self.getRoachNumber())]&lt;br /&gt;
         for who in range(self.roachNumber):&lt;br /&gt;
             i = 0&lt;br /&gt;
             while self.data[who*2+2][i] != &amp;#039;\n&amp;#039;:&lt;br /&gt;
                 path[who].append(int(self.data[who*2+2][i]))&lt;br /&gt;
                 i += 1&lt;br /&gt;
         return path&lt;br /&gt;
     def calculRoachNumber(self):&lt;br /&gt;
         line = 0&lt;br /&gt;
         while self.data[line] != &amp;#039;999\n&amp;#039;:&lt;br /&gt;
             line += 1&lt;br /&gt;
         self.roachNumber = line / 2&lt;br /&gt;
     &lt;br /&gt;
     def getRoachNumber(self):&lt;br /&gt;
         self.calculRoachNumber()&lt;br /&gt;
         return self.roachNumber&lt;br /&gt;
         &lt;br /&gt;
 class Board:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.rdr.readTXT(TXT)&lt;br /&gt;
         &lt;br /&gt;
     def initializeBoard(self):&lt;br /&gt;
         self.row, self.col = self.rdr.getBoardLength()&lt;br /&gt;
         self.board = [[0 for i in range(self.col)] for j in range(self.row)]&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
         &lt;br /&gt;
     def printBoard(self):&lt;br /&gt;
         for row in range(self.row):&lt;br /&gt;
             for col in range(self.col):&lt;br /&gt;
                 print self.board[row][col],&amp;#039;,&amp;#039;,&lt;br /&gt;
             print&lt;br /&gt;
         print&lt;br /&gt;
     &lt;br /&gt;
 class MoveRoach:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.dirNumber = {0:(-1,0),1:(-1,1),2:(0,1),3:(1,1),4:(1,0),5:(1,-1),6:(0,-1),7:(-1,-1)}&lt;br /&gt;
         self.rdr = Reader()&lt;br /&gt;
         self.brd = Board()&lt;br /&gt;
         &lt;br /&gt;
     def readTXT(self,TXT):&lt;br /&gt;
         self.rdr.readTXT(TXT)&lt;br /&gt;
         self.brd.readTXT(TXT)&lt;br /&gt;
         self.brd.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,board):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         self.rowLength = len(board)&lt;br /&gt;
         self.colLength = len(board[0])&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
 &lt;br /&gt;
     def setStartPoint(self):&lt;br /&gt;
         self.row = self.rdr.getStartPointRow()&lt;br /&gt;
         self.col = self.rdr.getStartPointCol()&lt;br /&gt;
         for who in range(self.rdr.getRoachNumber()):&lt;br /&gt;
             self.board[self.row[who]][self.col[who]] += 1&lt;br /&gt;
             &lt;br /&gt;
     def setPath(self):&lt;br /&gt;
         self.path = [0 for i in range(self.rdr.getRoachNumber())]&lt;br /&gt;
         for who in range(self.rdr.getRoachNumber()):&lt;br /&gt;
             self.path[who] = self.rdr.getPath()[who]&lt;br /&gt;
             &lt;br /&gt;
     def setCount(self):&lt;br /&gt;
         self.count = [0 for i in range(self.rdr.getRoachNumber())]&lt;br /&gt;
         self.time = self.getTime()&lt;br /&gt;
         &lt;br /&gt;
     def move(self):&lt;br /&gt;
         self.setStartPoint()&lt;br /&gt;
         self.setPath()&lt;br /&gt;
         self.setCount()&lt;br /&gt;
         &lt;br /&gt;
         for i in range(self.time):&lt;br /&gt;
             for who in range(self.rdr.getRoachNumber()):&lt;br /&gt;
                 if self.isRestPath(who):&lt;br /&gt;
                     move_row, move_col = self.dirNumber[self.path[who][i]]&lt;br /&gt;
                     self.row[who] += move_row&lt;br /&gt;
                     self.col[who] += move_col&lt;br /&gt;
                     self.checkOutOfBoard()&lt;br /&gt;
                     self.board[self.row[who]][self.col[who]] += 1&lt;br /&gt;
                     self.count[who] += 1&lt;br /&gt;
                     &lt;br /&gt;
             if self.isMoveAllCell():&lt;br /&gt;
                 break&lt;br /&gt;
             &lt;br /&gt;
     def isRestPath(self,who):&lt;br /&gt;
         return self.count[who] &amp;amp;lt; len(self.path[who])&lt;br /&gt;
             &lt;br /&gt;
     def getTime(self):&lt;br /&gt;
         time = 0&lt;br /&gt;
         for i in range(self.rdr.getRoachNumber()):&lt;br /&gt;
             time = max(time,len(self.path[i]))&lt;br /&gt;
         return time&lt;br /&gt;
 &lt;br /&gt;
             &lt;br /&gt;
     def isMoveAllCell(self):&lt;br /&gt;
         cellCount = 0&lt;br /&gt;
         for i in range(self.rowLength):&lt;br /&gt;
             for j in range(self.colLength):&lt;br /&gt;
                 if self.board[i][j] != 0:&lt;br /&gt;
                     cellCount += 1&lt;br /&gt;
         if cellCount &amp;amp;lt; self.rowLength * self.colLength:&lt;br /&gt;
             return False&lt;br /&gt;
         else:&lt;br /&gt;
             return True&lt;br /&gt;
 &lt;br /&gt;
     def checkOutOfBoard(self):&lt;br /&gt;
         for i in range(self.rdr.getRoachNumber()):&lt;br /&gt;
             if self.row[i] &amp;amp;lt; 0:&lt;br /&gt;
                 self.row[i] = self.rowLength - 1&lt;br /&gt;
             if self.row[i] &amp;amp;gt;= self.rowLength:&lt;br /&gt;
                 self.row[i] = 0&lt;br /&gt;
                 &lt;br /&gt;
         for j in range(self.rdr.getRoachNumber()):&lt;br /&gt;
             if self.col[j] &amp;amp;lt; 0:&lt;br /&gt;
                 self.col[j] = self.colLength - 1&lt;br /&gt;
             if self.col[j] &amp;amp;gt;= self.colLength:&lt;br /&gt;
                 self.col[j] = 0&lt;br /&gt;
         &lt;br /&gt;
     def getCount(self):&lt;br /&gt;
         return self.count&lt;br /&gt;
     &lt;br /&gt;
     def printCount(self):&lt;br /&gt;
         for i in range(len(self.count)):&lt;br /&gt;
             print self.count[i],&amp;#039;\n&amp;#039;&lt;br /&gt;
         &lt;br /&gt;
 if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
     unittest.main()&lt;br /&gt;
     TXT = &amp;#039;case3_0.TXT&amp;#039;&lt;br /&gt;
     brd = Board()&lt;br /&gt;
     moveRoach = MoveRoach()&lt;br /&gt;
     brd.readTXT(TXT)&lt;br /&gt;
     brd.initializeBoard()&lt;br /&gt;
     moveRoach.readTXT(TXT)&lt;br /&gt;
     moveRoach.setBoard(brd.getBoard())&lt;br /&gt;
     moveRoach.move()&lt;br /&gt;
     brd.setBoard(moveRoach.getBoard())&lt;br /&gt;
     moveRoach.printCount()&lt;br /&gt;
     brd.printBoard()&lt;br /&gt;
----&lt;br /&gt;
[[신재동/PracticeByTDD]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>