<?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=RandomWalk%2FExtremeSlayer</id>
	<title>RandomWalk/ExtremeSlayer - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=RandomWalk%2FExtremeSlayer"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=RandomWalk/ExtremeSlayer&amp;action=history"/>
	<updated>2026-05-15T02:14:44Z</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=RandomWalk/ExtremeSlayer&amp;diff=38341&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=RandomWalk/ExtremeSlayer&amp;diff=38341&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;* 인수군의 Random Walk - 아 심심해--;&lt;br /&gt;
&lt;br /&gt;
* 헤더&lt;br /&gt;
 #ifndef _BOARD_H_&lt;br /&gt;
 #define _BOARD_H_&lt;br /&gt;
 &lt;br /&gt;
 class RandomWalkBoard&lt;br /&gt;
 {&lt;br /&gt;
 private:&lt;br /&gt;
 	int _nRow;&lt;br /&gt;
 	int _nCol;&lt;br /&gt;
 	int** _nBlockFrequency;&lt;br /&gt;
 	int _nCurRow;&lt;br /&gt;
 	int _nCurCol;&lt;br /&gt;
 	int _nTotalMovement;&lt;br /&gt;
 public:&lt;br /&gt;
 	RandomWalkBoard(int&amp;amp;amp; nRow, int&amp;amp;amp; nCol, int&amp;amp;amp; nCurRow, int&amp;amp;amp; nCurCol);&lt;br /&gt;
 	~RandomWalkBoard();&lt;br /&gt;
 	void BoardAllocate();&lt;br /&gt;
 	void BoardFree();&lt;br /&gt;
 	void AddVisitCount();&lt;br /&gt;
 	void ShowBoardStatus() const;&lt;br /&gt;
 	bool CheckCompletelyPatrol() const;&lt;br /&gt;
 	void SetArrayAsZero(int&amp;amp;amp; nCurRow);&lt;br /&gt;
 	void StartMovement();&lt;br /&gt;
 	int GetRandomDirection() const; &lt;br /&gt;
 	bool CheckCorrectCoordinate(int&amp;amp;amp; nDelRow, int&amp;amp;amp; nDelCol) const;&lt;br /&gt;
 	void AddTotalCount();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
* 소스&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cmath&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;ctime&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 #include &amp;quot;RandomWalkBoard.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 //// 생성자와 소멸자 ////&lt;br /&gt;
 &lt;br /&gt;
 RandomWalkBoard::RandomWalkBoard(int&amp;amp;amp; nRow, int&amp;amp;amp; nCol, int&amp;amp;amp; nCurRow, int&amp;amp;amp; nCurCol)&lt;br /&gt;
 {&lt;br /&gt;
 	_nRow = nRow;&lt;br /&gt;
 	_nCol = nCol;&lt;br /&gt;
 	_nCurRow = nCurRow;&lt;br /&gt;
 	_nCurCol = nCurCol;&lt;br /&gt;
 	_nTotalMovement = 0;&lt;br /&gt;
 	srand(time(0));&lt;br /&gt;
 	BoardAllocate();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::BoardAllocate()&lt;br /&gt;
 {&lt;br /&gt;
 	_nBlockFrequency = new int*[_nRow];&lt;br /&gt;
 &lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; _nRow ; i ++)&lt;br /&gt;
 	{&lt;br /&gt;
 		_nBlockFrequency[i] = new int[_nCol];&lt;br /&gt;
 		SetArrayAsZero(i);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::SetArrayAsZero(int&amp;amp;amp; nCurRow)&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; _nCol ; i ++)&lt;br /&gt;
 	{&lt;br /&gt;
 		_nBlockFrequency[nCurRow][i] = 0;&lt;br /&gt;
 	}	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 RandomWalkBoard::~RandomWalkBoard()&lt;br /&gt;
 {&lt;br /&gt;
 	BoardFree();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::BoardFree()&lt;br /&gt;
 {&lt;br /&gt;
 	if(_nBlockFrequency)&lt;br /&gt;
 	{&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; _nRow ; i ++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if(_nBlockFrequency[i])&lt;br /&gt;
 				delete [] _nBlockFrequency[i];&lt;br /&gt;
 		}&lt;br /&gt;
 		delete [] _nBlockFrequency;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ////////////////////////&lt;br /&gt;
 &lt;br /&gt;
 //// 본 프로그램 ////&lt;br /&gt;
 &lt;br /&gt;
 bool RandomWalkBoard::CheckCompletelyPatrol() const&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; _nRow ; i ++)&lt;br /&gt;
 	{&lt;br /&gt;
 		for(int j = 0 ; j &amp;amp;lt; _nCol ; j++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if(_nBlockFrequency[i][j] == 0)&lt;br /&gt;
 				return false;&lt;br /&gt;
 		}&lt;br /&gt;
 	}	&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::ShowBoardStatus() const&lt;br /&gt;
 {&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; _nRow ; i ++)&lt;br /&gt;
 	{&lt;br /&gt;
 		for(int j = 0 ; j &amp;amp;lt; _nCol ; j++)&lt;br /&gt;
 		{&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; _nBlockFrequency[i][j] &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
 		}&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	}&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;현재 행 : &amp;quot; &amp;amp;lt;&amp;amp;lt; _nCurRow &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;현재 열 : &amp;quot; &amp;amp;lt;&amp;amp;lt; _nCurCol &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;총 이동량 : &amp;quot; &amp;amp;lt;&amp;amp;lt; _nTotalMovement &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::AddVisitCount()&lt;br /&gt;
 {&lt;br /&gt;
 	_nBlockFrequency[_nCurRow][_nCurCol]++;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::StartMovement()&lt;br /&gt;
 {&lt;br /&gt;
 	int DelRow = 0;&lt;br /&gt;
 	int DelCol = 0;&lt;br /&gt;
 	while(!CheckCompletelyPatrol())	&lt;br /&gt;
 	{&lt;br /&gt;
 		DelRow = GetRandomDirection();&lt;br /&gt;
 		DelCol = GetRandomDirection();&lt;br /&gt;
 		if(CheckCorrectCoordinate(DelRow, DelCol))&lt;br /&gt;
 		{&lt;br /&gt;
 			_nCurRow += DelRow;&lt;br /&gt;
 			_nCurCol += DelCol;&lt;br /&gt;
 			AddVisitCount();&lt;br /&gt;
 			AddTotalCount();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int RandomWalkBoard::GetRandomDirection() const&lt;br /&gt;
 {&lt;br /&gt;
 	return (rand()%3) - 1;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool RandomWalkBoard::CheckCorrectCoordinate(int&amp;amp;amp; nDelRow, int&amp;amp;amp; nDelCol) const&lt;br /&gt;
 {&lt;br /&gt;
 	if(_nCurRow + nDelRow &amp;amp;lt; 0 || _nCurRow + nDelRow &amp;amp;gt; _nRow - 1)&lt;br /&gt;
 		return false;&lt;br /&gt;
 	if(_nCurCol + nDelCol &amp;amp;lt; 0 || _nCurCol + nDelCol &amp;amp;gt; _nCol - 1)&lt;br /&gt;
 		return false;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RandomWalkBoard::AddTotalCount()&lt;br /&gt;
 {&lt;br /&gt;
 	_nTotalMovement++;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* 메인&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 #include &amp;quot;RandomWalkBoard.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 void AskInitData(int&amp;amp;amp; nRow, int&amp;amp;amp; nCol, int&amp;amp;amp; nCurRow, int&amp;amp;amp; nCurCol);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int nRow, nCol, nCurRow, nCurCol;&lt;br /&gt;
 	AskInitData(nRow, nCol, nCurRow, nCurCol);&lt;br /&gt;
 	RandomWalkBoard Test(nRow, nCol, nCurRow, nCurCol);&lt;br /&gt;
 	Test.StartMovement();&lt;br /&gt;
 	Test.ShowBoardStatus();&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void AskInitData(int&amp;amp;amp; nRow, int&amp;amp;amp; nCol, int&amp;amp;amp; nCurRow, int&amp;amp;amp; nCurCol)&lt;br /&gt;
 {&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n행을 입력하세요 : &amp;quot;;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nRow;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n열을 입력하세요 : &amp;quot;;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nCol;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n현재 바퀴벌레의 행을 입력하세요(0 ~ 행-1) : &amp;quot;;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nCurRow;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n현재 바퀴벌레의 열을 입력하세요(0 ~ 열-1) : &amp;quot;;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nCurCol;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* 간단한걸 너무 복잡하게 짠건 아닌가 하는 생각이 든다.. 제길 -- 인수&lt;br /&gt;
* 근데 리팩토링 책 보면 메소드는 최대한 짧고 간결하게 끊으라 그래서--; -- 인수&lt;br /&gt;
* 소스가 좀 길어지긴 해도 확실히 알아보긴 편한것 같다. -- 인수&lt;br /&gt;
* 이걸 왜 했냐면, 그냥 심심해서..--; 나두 데블스 캠프 가고 싶당.. 쩝.. -- 인수&lt;br /&gt;
&lt;br /&gt;
DeleteMe ) 누가 작성했나요?&lt;br /&gt;
----&lt;br /&gt;
[[RandomWalk]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>