<?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=CheckTheCheck%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>CheckTheCheck/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CheckTheCheck%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CheckTheCheck/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-14T19:59: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=CheckTheCheck/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=30251&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CheckTheCheck/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=30251&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:51Z</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;==== 소감 ====&lt;br /&gt;
2005/02/19 Accepted 0:00.004 64 &lt;br /&gt;
King의 check상태를 좀더 쉽게 알 수 있으려면 어떻게 해야 할까?&lt;br /&gt;
==== 코드 ====&lt;br /&gt;
 // no10196 - Check the Check&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cstring&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 const int MAX_CASE = 300;&lt;br /&gt;
 const int TIED = -1;&lt;br /&gt;
 const int BLACK = 0;&lt;br /&gt;
 const int WHITE = 1;&lt;br /&gt;
 &lt;br /&gt;
 char chess[10][10];&lt;br /&gt;
 &lt;br /&gt;
 inline void eatline() { while(cin.get() != &amp;#039;\n&amp;#039;) continue; };&lt;br /&gt;
 bool DoItChess();&lt;br /&gt;
 int WhoIsWin();&lt;br /&gt;
 int Pawn(int row, int col, char enemy);&lt;br /&gt;
 int Rook(int row, int col, char enemy);&lt;br /&gt;
 int Bishop(int row, int col, char enemy);&lt;br /&gt;
 int Queen(int row, int col, char enemy);&lt;br /&gt;
 int Knight(int row, int col, char enemy);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int win[MAX_CASE];&lt;br /&gt;
 	int nCase = 0;&lt;br /&gt;
 	while(DoItChess())&lt;br /&gt;
 	{&lt;br /&gt;
 		win[nCase++] = WhoIsWin();	&lt;br /&gt;
 		eatline();&lt;br /&gt;
 	}&lt;br /&gt;
 	for (int i=0; i&amp;amp;lt;nCase; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;Game #&amp;quot; &amp;amp;lt;&amp;amp;lt; i+1 &amp;amp;lt;&amp;amp;lt; &amp;quot;:&amp;quot;;&lt;br /&gt;
 		if (win[i] == BLACK)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot; white&amp;quot;;&lt;br /&gt;
 		else if (win[i] == WHITE)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot; black&amp;quot;;&lt;br /&gt;
 		else&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot; no&amp;quot;;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot; king is in check.\n&amp;quot;;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool DoItChess()&lt;br /&gt;
 {&lt;br /&gt;
 	int endCount = 0;&lt;br /&gt;
 	for (int i=0; i&amp;amp;lt;8; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin.getline(chess[i], 10, &amp;#039;\n&amp;#039;);&lt;br /&gt;
 		if (strcmp(chess[i], &amp;quot;........&amp;quot;) == 0)&lt;br /&gt;
 			endCount++;&lt;br /&gt;
 	}&lt;br /&gt;
 	if (endCount == 8)&lt;br /&gt;
 		return false;&lt;br /&gt;
 	return true;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int WhoIsWin()&lt;br /&gt;
 {&lt;br /&gt;
 	int check = TIED;&lt;br /&gt;
 	char enemy;&lt;br /&gt;
 	for (int i=0; i&amp;amp;lt;8; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		for (int j=0; j&amp;amp;lt;8; j++)&lt;br /&gt;
 		{&lt;br /&gt;
 			int key = int(chess[i][j]);&lt;br /&gt;
 			key &amp;amp;lt; int(&amp;#039;a&amp;#039;) ? enemy = &amp;#039;k&amp;#039; : enemy = &amp;#039;K&amp;#039;;		&lt;br /&gt;
 			switch(chess[i][j])&lt;br /&gt;
 			{&lt;br /&gt;
 			case &amp;#039;p&amp;#039;:&lt;br /&gt;
 			case &amp;#039;P&amp;#039;:&lt;br /&gt;
 				check = Pawn(i, j, enemy);&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;r&amp;#039;:&lt;br /&gt;
 			case &amp;#039;R&amp;#039;:&lt;br /&gt;
 				check = Rook(i, j, enemy);&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;b&amp;#039;:&lt;br /&gt;
 			case &amp;#039;B&amp;#039;:&lt;br /&gt;
 				check = Bishop(i, j, enemy);&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;q&amp;#039;:&lt;br /&gt;
 			case &amp;#039;Q&amp;#039;:&lt;br /&gt;
 				check = Queen(i, j, enemy);&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;n&amp;#039;:&lt;br /&gt;
 			case &amp;#039;N&amp;#039;:&lt;br /&gt;
 				check = Knight(i, j, enemy);&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			if (check == BLACK || check == WHITE)&lt;br /&gt;
 				return check;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return check;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Pawn(int row, int col, char enemy)&lt;br /&gt;
 {&lt;br /&gt;
 	if (enemy == &amp;#039;K&amp;#039; &amp;amp;amp;&amp;amp;amp; (chess[row+1][col-1] == enemy || chess[row+1][col+1] == enemy))&lt;br /&gt;
 		return BLACK;&lt;br /&gt;
 	if (enemy == &amp;#039;k&amp;#039; &amp;amp;amp;&amp;amp;amp; (chess[row-1][col-1] == enemy || chess[row-1][col+1] == enemy))&lt;br /&gt;
 		return WHITE;&lt;br /&gt;
 	return TIED;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Rook(int row, int col, char enemy)&lt;br /&gt;
 {&lt;br /&gt;
 	int i;&lt;br /&gt;
 	bool check = false;&lt;br /&gt;
 	for (i=row-1; i&amp;amp;gt;=0; i--)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (chess[i][col] == enemy)&lt;br /&gt;
 		{&lt;br /&gt;
 			check = true;&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (chess[i][col] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 			continue;&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	for (i=row+1; i&amp;amp;lt;8; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (chess[i][col] == enemy)&lt;br /&gt;
 		{&lt;br /&gt;
 			check = true;&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (chess[i][col] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 			continue;&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	for (i=col-1; i&amp;amp;gt;=0; i--)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (chess[row][i] == enemy)&lt;br /&gt;
 		{&lt;br /&gt;
 			check = true;&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (chess[row][i] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 			continue;&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	for (i=col+1; i&amp;amp;lt;8; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (chess[row][i] == enemy)&lt;br /&gt;
 		{&lt;br /&gt;
 			check = true;&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (chess[row][i] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 			continue;&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	if (check)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(enemy == &amp;#039;K&amp;#039;)&lt;br /&gt;
 			return BLACK; &lt;br /&gt;
 		else return WHITE;&lt;br /&gt;
 	}&lt;br /&gt;
 	return TIED;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Bishop(int row, int col, char enemy)&lt;br /&gt;
 {&lt;br /&gt;
 	int i;&lt;br /&gt;
 	bool check = false;&lt;br /&gt;
 	bool temp[2] = {0,};&lt;br /&gt;
 	int count = 0;&lt;br /&gt;
 	for (i=row-1; i&amp;amp;gt;=0; i--)&lt;br /&gt;
 	{&lt;br /&gt;
 		count++;&lt;br /&gt;
 		if (col - count &amp;amp;gt;= 0 &amp;amp;amp;&amp;amp;amp; !temp[0])&lt;br /&gt;
 		{&lt;br /&gt;
 			if (chess[i][col-count] == enemy)&lt;br /&gt;
 			{&lt;br /&gt;
 				check = true;&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (chess[i][col-count] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 				;&lt;br /&gt;
 			else temp[0] = 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		if (col + count &amp;amp;lt; 8 &amp;amp;amp;&amp;amp;amp; !temp[1])&lt;br /&gt;
 		{&lt;br /&gt;
 			if (chess[i][col+count] == enemy)&lt;br /&gt;
 			{&lt;br /&gt;
 				check = true;&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (chess[i][col+count] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 				;&lt;br /&gt;
 			else temp[1] = 1;&lt;br /&gt;
 		}	&lt;br /&gt;
 	}&lt;br /&gt;
 	count = 0;&lt;br /&gt;
 	temp[0] = temp[1] = 0;&lt;br /&gt;
 	for (i=row+1; i&amp;amp;lt;8; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		count++;&lt;br /&gt;
 		if (col - count &amp;amp;gt;= 0 &amp;amp;amp;&amp;amp;amp; !temp[0])&lt;br /&gt;
 		{&lt;br /&gt;
 			if (chess[i][col-count] == enemy)&lt;br /&gt;
 			{&lt;br /&gt;
 				check = true;&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (chess[i][col-count] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 				;&lt;br /&gt;
 			else temp[0] = 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		if (col + count &amp;amp;lt; 8 &amp;amp;amp;&amp;amp;amp; !temp[1])&lt;br /&gt;
 		{&lt;br /&gt;
 			if (chess[i][col+count] == enemy)&lt;br /&gt;
 			{&lt;br /&gt;
 				check = true;&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			else if (chess[i][col+count] == &amp;#039;.&amp;#039;)&lt;br /&gt;
 				;&lt;br /&gt;
 			else temp[1] = 1;&lt;br /&gt;
 		}	&lt;br /&gt;
 	}&lt;br /&gt;
 	if (check)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(enemy == &amp;#039;K&amp;#039;)&lt;br /&gt;
 			return BLACK; &lt;br /&gt;
 		else return WHITE;&lt;br /&gt;
 	}&lt;br /&gt;
 	return TIED;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Queen(int row, int col, char enemy)&lt;br /&gt;
 {&lt;br /&gt;
 	if (Rook(row, col, enemy) == BLACK || Bishop(row, col, enemy) == BLACK)&lt;br /&gt;
 		return BLACK;&lt;br /&gt;
 	else if(Rook(row, col, enemy) == WHITE || Bishop(row, col, enemy) == WHITE)&lt;br /&gt;
 		return WHITE;&lt;br /&gt;
 	return TIED;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int Knight(int row, int col, char enemy)&lt;br /&gt;
 {&lt;br /&gt;
 	bool check = false;&lt;br /&gt;
 	if (chess[row-2][col-1] == enemy || chess[row-2][col+1] == enemy)&lt;br /&gt;
 		check = true;&lt;br /&gt;
 	if (chess[row-1][col-2] == enemy || chess[row-1][col+2] == enemy)&lt;br /&gt;
 		check = true;&lt;br /&gt;
 	if (chess[row+2][col-1] == enemy || chess[row+2][col+1] == enemy)&lt;br /&gt;
 		check = true;&lt;br /&gt;
 	if (chess[row+1][col-2] == enemy || chess[row+1][col+2] == enemy)&lt;br /&gt;
 		check = true;&lt;br /&gt;
 	if (check &amp;amp;amp;&amp;amp;amp; enemy == &amp;#039;K&amp;#039;)&lt;br /&gt;
 		return BLACK;&lt;br /&gt;
 	if (check &amp;amp;amp;&amp;amp;amp; enemy == &amp;#039;k&amp;#039;)&lt;br /&gt;
 		return WHITE;&lt;br /&gt;
 	return TIED;&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[CheckTheCheck]] [[문보창]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>