{"id":2238,"date":"2009-10-04T16:20:30","date_gmt":"2009-10-04T16:20:30","guid":{"rendered":"http:\/\/192.168.0.71:9090\/?p=1940"},"modified":"2009-10-04T16:20:30","modified_gmt":"2009-10-04T16:20:30","slug":"programming-challenges-%ec%b2%b4%ed%81%ac-%ed%99%95%ec%9d%b8-check-the-check","status":"publish","type":"post","link":"https:\/\/talsu.net\/?p=2238","title":{"rendered":"Programming Challenges &#8211; \uccb4\ud06c \ud655\uc778 (Check the Check)"},"content":{"rendered":"<p><span style=\"font-size: 12pt; font-weight: bold;\"><a title=\"[http:\/\/programming-challenges.com\/pg.php?page=downloadproblem&amp;probid=110107&amp;format=html]\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.\" target=\"_blank\" href=\"http:\/\/programming-challenges.com\/pg.php?page=downloadproblem&amp;probid=110107&amp;format=html\">\ubb38\uc81c &lt;- \ud074\ub9ad<\/a><\/span><\/p>\n<p><span style=\"text-decoration: line-through;\">\uc26c\uc6b4 \ubb38\uc81c\uc778\ub370 \ubb58 \uc798\ubabb\ud55c\uac74\uc9c0 \ucc44\uc810\uc774 \uc548\ub41c\ub2e4.  \uc9c1\uc811 \ud14c\uc2a4\ud2b8 \ud558\uae30\uc5d0\ub294 \ub2e4 \ub418\ub294\ub370 \ubb50\uac00 \ubb38\uc81c\uc778\uc9c0.. \uc74c..<\/span><br style=\"text-decoration: line-through;\"><span style=\"text-decoration: line-through;\"><br \/>\n\uc660\uc9c0 \ub610 \uc0ac\uc18c\ud55c \ubb38\uc81c\uc77c\uac83 \uac19\uc544 \uc77c\ub2e8 \uc62c\ub824\ub450\uace0 \ub2e4\uc74c\uc5d0 \uae68\ub057\ud55c \uc815\uc2e0\uc73c\ub85c \uc0b4\ud3b4\ubd10\uc57c\uaca0\ub2e4.<\/span><br \/>\n<span style=\"font-weight: bold;\"><span style=\"font-size: 11pt;\">(\uc218\uc815)  \uc131\uacf5 \ud588\ub2e4&#8230;. if (0 &lt;= x &amp;&amp; x &lt; 8 &amp;&amp; 0 &lt;= y &amp;&amp; y &lt; 8)  \uc774\ubd80\ubd84 \ubc94\uc704\ub97c \uc798\ubabb \uc801\uc5c8\ub2e4. \uc774\ub7f0 \uba4d\uccad\ud55c \uc2e4\uc218\ub97c \ud558\ub2e4\ub2c8 \ub09c \uc544\uc9c1 \uba40\uc5c8\ub124..<\/span><\/span><\/p>\n<pre class=\"lang:c++ decode:true\">#include <iostream>\n#include <string.h>\nusing namespace std;\nclass Chess {\nprivate:\n\tchar field[8][8];\n\tbool checkLange(int x, int y) {\n\t\tif (0 <= x &#038;&#038; x < 8 &#038;&#038; 0 <= y &#038;&#038; y < 8)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n\tint checkDirection(bool black, int x, int y, int xx, int yy) {\n\t\tif (!checkLange(x + xx, y + yy))\n\t\t\treturn 0;\n\t\tif (field[x + xx][y + yy] == '.')\n\t\t\treturn checkDirection(black, x + xx, y + yy, xx, yy);\n\t\telse if (field[x + xx][y + yy] == (black ? 'K' : 'k')) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tint checkLocation(bool black, int x, int y, int xx, int yy) {\n\t\tif (!checkLange(x + xx, y + yy))\n\t\t\treturn 0;\n\t\tif (field[x + xx][y + yy] == (black ? 'K' : 'k')) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tbool pawn(bool black, int x, int y) {\n\t\tif (black) {\n\t\t\tif (checkLocation(black, x, y, 1, -1) == 1)\n\t\t\t\treturn true;\n\t\t\tif (checkLocation(black, x, y, 1, 1) == 1)\n\t\t\t\treturn true;\n\t\t} else {\n\t\t\tif (checkLocation(black, x, y, -1, -1) == 1)\n\t\t\t\treturn true;\n\t\t\tif (checkLocation(black, x, y, -1, 1) == 1)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tbool king(bool black, int x, int y) {\n\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\tif (!(i == 0 &#038;&#038; j == 0))\n\t\t\t\t\tif (checkLocation(black, x, y, i, j) == 1)\n\t\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tbool knight(bool black, int x, int y) {\n\t\tif (checkLocation(black, x, y, -2, -1) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, -1, -2) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, 1, -2) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, 2, -1) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, 2, 1) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, 1, 2) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, -1, 2) == 1)\n\t\t\treturn true;\n\t\tif (checkLocation(black, x, y, -2, 1) == 1)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n\tbool rook(bool black, int x, int y) {\n\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\tif (!(i == 0 &#038;&#038; j == 0))\n\t\t\t\t\tif (i == 0 || j == 0)\n\t\t\t\t\t\tif (checkDirection(black, x, y, i, j) == 1)\n\t\t\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tbool bishop(bool black, int x, int y) {\n\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\tif (i != 0 &#038;&#038; j != 0)\n\t\t\t\t\tif (checkDirection(black, x, y, i, j) == 1)\n\t\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tbool queen(bool black, int x, int y) {\n\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\tif (!(i == 0 &#038;&#038; j == 0))\n\t\t\t\t\tif (checkDirection(black, x, y, i, j) == 1)\n\t\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\npublic:\n\tbool input() {\n\t\tstd::string buffer;\n\t\tint dotCounter = 0;\n\t\tfor (int i = 0; i < 8; ++i) {\n\t\t\tstd::getline(std::cin,buffer);\n\t\t\tfor (int j = 0; j < 8; ++j) {\n\t\t\t\tif (buffer[j] == '.')\n\t\t\t\t\tdotCounter++;\n\t\t\t\tfield[i][j] = buffer[j];\n\t\t\t}\n\t\t}\n\t\tif (dotCounter == 64) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tint checkTheCheck() {\n\t\tfor (int i = 0; i < 8; ++i) {\n\t\t\tfor (int j = 0; j < 8; ++j)\n\t\t\t\tswitch (field[i][j]) {\n\t\t\t\tcase 'r':\n\t\t\t\t\tif (rook(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R':\n\t\t\t\t\tif (rook(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b':\n\t\t\t\t\tif (bishop(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'B':\n\t\t\t\t\tif (bishop(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q':\n\t\t\t\t\tif (queen(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Q':\n\t\t\t\t\tif (queen(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'p':\n\t\t\t\t\tif (pawn(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'P':\n\t\t\t\t\tif (pawn(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'n':\n\t\t\t\t\tif (knight(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\tif (knight(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'k':\n\t\t\t\t\tif (king(true, i, j))\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tif (king(false, i, j))\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n};\n\nint main() {\n\tChess chess;\n\tstd::string buffer;\n\tint gameNumber = 0;\n\n\twhile (!chess.input()) {\n\t\tgameNumber++;\n\t\tint check = chess.checkTheCheck();\n\t\tif (check == 1)\n\t\t\tcout << \"Game #\" << gameNumber << \": white king is in check.\"\n\t\t\t\t\t<< endl;\n\t\telse if (check == 2)\n\t\t\tcout << \"Game #\" << gameNumber << \": black king is in check.\"\n\t\t\t\t\t<< endl;\n\t\telse\n\t\t\tcout << \"Game #\" << gameNumber << \": no king is in check.\" << endl;\n\t\tstd::getline(std::cin,buffer);\n\t}\n\treturn 0;\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ubb38\uc81c &lt;- \ud074\ub9ad \uc26c\uc6b4 \ubb38\uc81c\uc778\ub370 \ubb58 \uc798\ubabb\ud55c\uac74\uc9c0 \ucc44\uc810\uc774 \uc548\ub41c\ub2e4. \uc9c1\uc811 \ud14c\uc2a4\ud2b8 \ud558\uae30\uc5d0\ub294 \ub2e4 \ub418\ub294\ub370 \ubb50\uac00 \ubb38\uc81c\uc778\uc9c0.. \uc74c.. \uc660\uc9c0 \ub610 \uc0ac\uc18c\ud55c \ubb38\uc81c\uc77c\uac83 \uac19\uc544 \uc77c\ub2e8 \uc62c\ub824\ub450\uace0 \ub2e4\uc74c\uc5d0 \uae68\ub057\ud55c \uc815\uc2e0\uc73c\ub85c \uc0b4\ud3b4\ubd10\uc57c\uaca0\ub2e4. (\uc218\uc815) \uc131\uacf5 \ud588\ub2e4&#8230;. if (0 &lt;= x &amp;&amp; x &lt; 8 &amp;&amp; 0 &lt;= y &amp;&amp; y &lt; 8) \uc774\ubd80\ubd84 \ubc94\uc704\ub97c \uc798\ubabb \uc801\uc5c8\ub2e4. \uc774\ub7f0 \uba4d\uccad\ud55c \uc2e4\uc218\ub97c \ud558\ub2e4\ub2c8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[9],"tags":[49,67,71,72,203,385,435],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pXV5a-A6","_links":{"self":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts\/2238"}],"collection":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2238"}],"version-history":[{"count":0,"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts\/2238\/revisions"}],"wp:attachment":[{"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}