From 9aeab0637db9b3da2e428680ebb20facdc79d587 Mon Sep 17 00:00:00 2001 From: dhlee777 Date: Fri, 12 Apr 2024 16:31:43 +0900 Subject: [PATCH] =?UTF-8?q?2024-04-12=20=EC=A0=81=EB=A1=9D=EC=83=89?= =?UTF-8?q?=EC=95=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\353\241\235\354\203\211\354\225\275.cpp" | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "dhlee777/dfs/\354\240\201\353\241\235\354\203\211\354\225\275.cpp" diff --git "a/dhlee777/dfs/\354\240\201\353\241\235\354\203\211\354\225\275.cpp" "b/dhlee777/dfs/\354\240\201\353\241\235\354\203\211\354\225\275.cpp" new file mode 100644 index 0000000..11902db --- /dev/null +++ "b/dhlee777/dfs/\354\240\201\353\241\235\354\203\211\354\225\275.cpp" @@ -0,0 +1,55 @@ +#include +using namespace std; +char color[100][100]; //Á¤»óÀÎÀÌ º¸´Â ±×¸² +char color2[100][100]; //Àû·Ï»ö¾àÀÌ º¸´Â ±×¸² +bool visited[100][100]; //Á¤»óÀÎ ±×¸²ÀÇ ¹æ¹®¿©ºÎ +bool visited2[100][100]; //Àû·Ï»ö¾à ±×¸²ÀÇ ¹æ¹®¿©ºÎ +string line; // ÇÑÁÙ ÀÔ·ÂÀ» ¹Þ±âÀ§ÇÑ ½ºÆ®¸µ +int siz; //±×¸²ÀÇ ÇÑ º¯ÀÇ ±æÀÌ +int coun = 0; //Á¤»óÀÎÀÌ ±×¸²À»ºÃÀ»¶§ ±¸¿ªÀÇ°³¼ö +int coun2 = 0; //Àû·Ï»ö¾àÀÌ ºÃÀ»¶§ ±¸¿ªÀÇ°³¼ö +int x[4]={0,0,-1,1}; //»óÇÏÁ¿ì Ž»öÀ» À§ÇÑ xÁÂÇ¥ À̵¿°ª +int y[4] = { -1,1,0,0 }; // yÁÂÇ¥ À̵¿°ª + +void dfs(int a,int b,char color[][100], bool visited[][100]) { //x:Ž»ö½ÃÀÛ ÁÂÇ¥,y:Ž»ö½ÃÀÛ yÁÂÇ¥ color:Á¤»óÀÎÀÇ Å½»öÀÎÁö Àû·Ï»ö¾àÀÇ Å½»öÀÎÁö + for (int i = 0; i < 4; i++) { + int a2 = a + x[i]; + int b2 = b + y[i]; + if (a2 >= 0 && a2 < siz && b2 >= 0 && b2 < siz && !visited[a2][b2]&&color[a][b]==color[a2][b2]) { + visited[a2][b2] = true; + dfs(a2, b2,color,visited); + } + } +} +int main(void) { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cin >> siz; + for (int i = 0; i < siz; i++) { //color,clolor2¹è¿­¿¡ ±×¸²À» ÀÔ·Â¹Þ¾Æ ÀúÀåÇØÁØ´Ù. + cin >> line; + for (int j = 0; j < siz; j++) { + color[i][j] = line[j]; + if (line[j] == 'R') color2[i][j] = 'G'; //Àû·Ï»ö¾àÀ» À§ÇØ rÀ» g·Î ´Ù ¹Ù²ã¼­ ÀúÀåÇØÁØ´Ù. + else color2[i][j] = line[j]; + } + } + + for (int i = 0; i < siz; i++) { //Á¤»óÀÎÀÇ Å½»ö + for (int j = 0; j < siz; j++) { + if (!visited[i][j]) { + dfs(i,j,color,visited); + coun++; + } + } + } + for (int i = 0; i < siz; i++) { //Àû·Ï»ö¾àÀÇ Å½»ö + for (int j = 0; j < siz; j++) { + if (!visited2[i][j]) { + dfs(i, j, color2,visited2); + coun2++; + } + } + } + cout << coun <<" "<< coun2; + return 0; +} \ No newline at end of file