<?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=MineSweeper%2F%ED%99%A9%EC%9E%AC%EC%84%A0</id>
	<title>MineSweeper/황재선 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=MineSweeper%2F%ED%99%A9%EC%9E%AC%EC%84%A0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MineSweeper/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;action=history"/>
	<updated>2026-05-14T22:58:14Z</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=MineSweeper/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=34671&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MineSweeper/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=34671&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:46Z</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;== MineSweeper ==&lt;br /&gt;
=== &lt;br /&gt;
 ~cpp MineSweeper.java&lt;br /&gt;
===&lt;br /&gt;
 import java.io.BufferedReader;&lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import java.io.InputStreamReader;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Created on 2005. 1. 2&lt;br /&gt;
  *&lt;br /&gt;
  * TODO To change the template for this generated file go to&lt;br /&gt;
  * Window - Preferences - Java - Code Style - Code Templates&lt;br /&gt;
  */&lt;br /&gt;
 public class MineSweeper {&lt;br /&gt;
 	String [][] mineArr;&lt;br /&gt;
 	&lt;br /&gt;
 	public int [] inputSize()  {&lt;br /&gt;
 		String input = input();&lt;br /&gt;
 		String [] array = input.split(&amp;quot; &amp;quot;);&lt;br /&gt;
 		int len = array.length;&lt;br /&gt;
 		int [] intArray = new int[len];&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; len; i++)&lt;br /&gt;
 			intArray[i] = Integer.parseInt(array[i]);&lt;br /&gt;
 		return intArray;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public String[][] inputChar(int []array) {&lt;br /&gt;
 		&lt;br /&gt;
 		int row = array[0];&lt;br /&gt;
 		int col = array[1];&lt;br /&gt;
 		&lt;br /&gt;
 		mineArr = new String[row][col];&lt;br /&gt;
 		&lt;br /&gt;
 		for(int i = 0; i &amp;amp;lt; row; i++) {&lt;br /&gt;
 			String input = input();&lt;br /&gt;
 			String [] arr = input.split(&amp;quot;&amp;quot;);&lt;br /&gt;
 			&lt;br /&gt;
 			for (int j = 0; j &amp;amp;lt; col; j++)&lt;br /&gt;
 				mineArr[i][j] = arr[j+1];&lt;br /&gt;
 		}&lt;br /&gt;
 		return mineArr;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public String input() {&lt;br /&gt;
 		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));&lt;br /&gt;
 		String input = &amp;quot;&amp;quot;;&lt;br /&gt;
 		try {&lt;br /&gt;
 			input = in.readLine();&lt;br /&gt;
 		} catch (IOException e) {&lt;br /&gt;
 			e.printStackTrace();&lt;br /&gt;
 		}&lt;br /&gt;
 		return input;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public String[][] findPosition() {&lt;br /&gt;
 		int len = mineArr[0].length;&lt;br /&gt;
 		&lt;br /&gt;
 		for (int row = 0; row &amp;amp;lt; mineArr.length; row++) {&lt;br /&gt;
 			for (int col = 0; col &amp;amp;lt; len; col++) {&lt;br /&gt;
 				if (mineArr[row][col].compareTo(&amp;quot;*&amp;quot;) == 0)&lt;br /&gt;
 					continue;&lt;br /&gt;
 				countMine(row, col);	&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		return mineArr;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	private void countMine(int row, int col) {&lt;br /&gt;
 		int count = 0;&lt;br /&gt;
 		int [] posRow = {-1, -1, 0, 1, 1, 1, 0, -1};&lt;br /&gt;
 		int [] posCol = {0, 1, 1, 1, 0, -1, -1, -1};&lt;br /&gt;
 		&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; posRow.length; i++) {&lt;br /&gt;
 			if (row+posRow[i] &amp;amp;gt;= 0 &amp;amp;amp;&amp;amp;amp; col+posCol[i] &amp;amp;gt;= 0 &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
 					row+posRow[i] &amp;amp;lt; mineArr.length &amp;amp;amp;&amp;amp;amp; col+posCol[i] &amp;amp;lt; mineArr[0].length)&lt;br /&gt;
 				if (mineArr[row+posRow[i]][col+posCol[i]].compareTo(&amp;quot;*&amp;quot;) == 0)&lt;br /&gt;
 					count++;&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 		mineArr[row][col] = Integer.toString(count);		&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	private void printResult(Vector v) {	&lt;br /&gt;
 		int size = v.size();&lt;br /&gt;
 		int i = 0;&lt;br /&gt;
 		while (i &amp;amp;lt; size) {&lt;br /&gt;
 			String [][] arr = (String [][]) v.get(i);&lt;br /&gt;
 			int num = i+1;&lt;br /&gt;
 			System.out.println(&amp;quot;Field #&amp;quot; + num + &amp;quot;:&amp;quot;);&lt;br /&gt;
 			for (int row = 0; row &amp;amp;lt; arr.length; row++) {&lt;br /&gt;
 				for (int col = 0; col &amp;amp;lt; arr[0].length; col++) {&lt;br /&gt;
 					System.out.print(arr[row][col]);&lt;br /&gt;
 				}&lt;br /&gt;
 				System.out.println();&lt;br /&gt;
 			}&lt;br /&gt;
 			System.out.println();&lt;br /&gt;
 			i++;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	static public void main(String [] args) {&lt;br /&gt;
 		Vector v = new Vector();&lt;br /&gt;
 		while (true) {&lt;br /&gt;
 			MineSweeper m = new MineSweeper();&lt;br /&gt;
 			int [] array = m.inputSize();&lt;br /&gt;
 			if (array[0] == 0 &amp;amp;amp;&amp;amp;amp; array[1] == 0) {&lt;br /&gt;
 				m.printResult(v);&lt;br /&gt;
 				break;&lt;br /&gt;
 			}	&lt;br /&gt;
 			else {&lt;br /&gt;
 				m.inputChar(array);&lt;br /&gt;
 				m.findPosition();&lt;br /&gt;
 				v.add(m.mineArr);&lt;br /&gt;
 			}			&lt;br /&gt;
 		}		&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &lt;br /&gt;
 ~cpp TestMineSweeper.java&lt;br /&gt;
===&lt;br /&gt;
 import junit.framework.TestCase;&lt;br /&gt;
 /*&lt;br /&gt;
  * Created on 2005. 1. 2&lt;br /&gt;
  *&lt;br /&gt;
  * TODO To change the template for this generated file go to&lt;br /&gt;
  * Window - Preferences - Java - Code Style - Code Templates&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 public class TestMineSweeper extends TestCase {&lt;br /&gt;
 	MineSweeper m = new MineSweeper();&lt;br /&gt;
 	&lt;br /&gt;
 	String [][] arr;&lt;br /&gt;
 	public void tInput() {&lt;br /&gt;
 		int [] array = m.inputSize();&lt;br /&gt;
 		assertEquals(4, array[0]);&lt;br /&gt;
 		assertEquals(4, array[1]);&lt;br /&gt;
 		assertEquals(2, array.length);&lt;br /&gt;
 &lt;br /&gt;
 		arr = m.inputChar(array);&lt;br /&gt;
 		assertEquals(4, arr.length);&lt;br /&gt;
 		assertEquals(4, arr[0].length);&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void testFirstLine() {&lt;br /&gt;
 		tInput();&lt;br /&gt;
 		arr = m.findPosition();&lt;br /&gt;
 		assertEquals(&amp;quot;1&amp;quot;, arr[0][1]);&lt;br /&gt;
 		assertEquals(&amp;quot;0&amp;quot;, arr[0][2]);&lt;br /&gt;
 		assertEquals(&amp;quot;0&amp;quot;, arr[0][3]);&lt;br /&gt;
 		assertEquals(&amp;quot;2&amp;quot;, arr[1][0]);&lt;br /&gt;
 		assertEquals(&amp;quot;2&amp;quot;, arr[1][1]);&lt;br /&gt;
 		&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 느낀점 ==&lt;br /&gt;
# 생각보다 단순한 문제였다. 윈도우의 지뢰찾기가 생각나서 어려워했나보다. RandomWalk보다 훨씬 쉽다.&lt;br /&gt;
* 변수 명명이 아직도 고민된다. 배열은 무조건 array 혹은 arr으로, 키보드 입력은 input을 붙인다. 딱히 적당한 이름이 생각나지 않는다.&lt;br /&gt;
* 자바에서 console 모드의 키보드 입력를 처음 사용했다. c보다 불편하다.&lt;br /&gt;
* tdd가 힘들다. 무엇을 테스트해야할지 모르겠다. 키보드 입력과 결과부분을 테스트했다. 그냥 막코딩한것같다. 생각대로 풀려서 다행이다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
MineSweeper&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>