<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>현구의 개발 블로그</title>
    <link>https://mun-coding.tistory.com/</link>
    <description>개인 공부 기록 블로그</description>
    <language>ko</language>
    <pubDate>Wed, 22 Jul 2026 04:38:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>현구구</managingEditor>
    <item>
      <title>백준 1565 c++ N과 M (5)</title>
      <link>https://mun-coding.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15654&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/15654&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720501261762&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

bool visit[8];
int result[8];
int arr[8];

void dfs(int n, int m, int cnt)
{
	if (cnt == m)
	{
		for (int i = 0; i &amp;lt; m; i++)
		{
			cout &amp;lt;&amp;lt; result[i] &amp;lt;&amp;lt; ' ';
		}
		cout &amp;lt;&amp;lt; '\n';
		return;
	}
	for (int i = 0; i &amp;lt; n; i++)
	{
		if (visit[i] == false)
		{
			result[cnt] = arr[i];
			visit[i] = true;
			dfs(n, m, cnt + 1);
			visit[i] = false;
		}
	}
}

int main()
{
	int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	for (int i = 0; i &amp;lt; n; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
	}
	sort(arr, arr + n);
	dfs(n, m, 0);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/258</guid>
      <comments>https://mun-coding.tistory.com/258#entry258comment</comments>
      <pubDate>Tue, 9 Jul 2024 14:01:09 +0900</pubDate>
    </item>
    <item>
      <title>백준 15652 c++ N과 M (4)</title>
      <link>https://mun-coding.tistory.com/257</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15652&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/15652&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720501122845&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

bool visit[8];
int result[8];

void dfs(int start, int n, int m, int cnt)
{
	if (cnt == m)
	{
		for (int i = 0; i &amp;lt; m; i++)
		{
			cout &amp;lt;&amp;lt; result[i] &amp;lt;&amp;lt; ' ';
		}
		cout &amp;lt;&amp;lt; '\n';
		return;
	}
	for (int i = start; i &amp;lt;= n; i++)
	{
		result[cnt] = i;
		dfs(i, n, m, cnt + 1);
	}
}

int main()
{
	int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	dfs(1, n, m, 0);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>DFS</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/257</guid>
      <comments>https://mun-coding.tistory.com/257#entry257comment</comments>
      <pubDate>Tue, 9 Jul 2024 13:58:59 +0900</pubDate>
    </item>
    <item>
      <title>백준 15651 c++ N과 M(3)</title>
      <link>https://mun-coding.tistory.com/256</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15651&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/15651&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720500969154&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

bool visit[8];
int result[8];

void dfs(int n, int m, int cnt)
{
	if (cnt == m)
	{
		for (int i = 0; i &amp;lt; m; i++)
		{
			cout &amp;lt;&amp;lt; result[i] &amp;lt;&amp;lt; ' ';
		}
		cout &amp;lt;&amp;lt; '\n';
		return;
	}
	for (int i = 1; i &amp;lt;= n; i++)
	{
		result[cnt] = i;
		dfs(n, m, cnt + 1);
	}
}

int main()
{
	int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	dfs(n, m, 0);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>DFS</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/256</guid>
      <comments>https://mun-coding.tistory.com/256#entry256comment</comments>
      <pubDate>Tue, 9 Jul 2024 13:56:38 +0900</pubDate>
    </item>
    <item>
      <title>백준 15650 c++ N과 M (2)</title>
      <link>https://mun-coding.tistory.com/255</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15650&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/15650&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720500618754&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

bool visit[8];
int result[8];

void dfs(int start, int n, int m, int cnt)
{
	if (cnt == m)
	{
		for (int i = 0; i &amp;lt; m; i++)
		{
			cout &amp;lt;&amp;lt; result[i] &amp;lt;&amp;lt; ' ';
		}
		cout &amp;lt;&amp;lt; '\n';
	}
	for (int i = start; i &amp;lt;= n; i++)
	{
		if (visit[i] == false) 
		{
			result[cnt] = i;
			visit[i] = true;
			dfs(i,n, m, cnt + 1);
			visit[i] = false;
		}
	}
}

int main()
{
	int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	dfs(1, n, m, 0);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>DFS</category>
      <category>N과M</category>
      <category>백준</category>
      <category>백트래킹</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/255</guid>
      <comments>https://mun-coding.tistory.com/255#entry255comment</comments>
      <pubDate>Tue, 9 Jul 2024 13:50:44 +0900</pubDate>
    </item>
    <item>
      <title>백준 15649 c++ N과 M (1)</title>
      <link>https://mun-coding.tistory.com/254</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15649&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/15649&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720499949775&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

bool visit[8];
int result[8];

void dfs(int n, int m, int cnt)
{
	if (cnt == m)
	{
		for (int i = 0; i &amp;lt; m; i++)
		{
			cout &amp;lt;&amp;lt; result[i] &amp;lt;&amp;lt; ' ';
		}
		cout &amp;lt;&amp;lt; '\n';
	}
	for (int i = 1; i &amp;lt;= n; i++)
	{
		if (visit[i] == false)
		{
			result[cnt] = i;
			visit[i] = true;
			dfs(n, m, cnt + 1);
			visit[i] = false;
		}
	}
}

int main()
{
	int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	dfs(n, m, 0);

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>DFS</category>
      <category>N과M</category>
      <category>백트래킹</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/254</guid>
      <comments>https://mun-coding.tistory.com/254#entry254comment</comments>
      <pubDate>Tue, 9 Jul 2024 13:45:11 +0900</pubDate>
    </item>
    <item>
      <title>백준 9095 1, 2, 3 더하기</title>
      <link>https://mun-coding.tistory.com/253</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9095&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/9095&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1720499110315&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

int T = 0;

int main()
{
	cin &amp;gt;&amp;gt; T;
	int dp[11];
	dp[1] = 1;
	dp[2] = 2;
	dp[3] = 4;
	for (int i = 4; i &amp;lt;= 10; i++)
	{
		dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
	}
	while (T--)
	{
		int n;
		cin &amp;gt;&amp;gt; n;
		cout &amp;lt;&amp;lt; dp[n] &amp;lt;&amp;lt; '\n';
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>다이나믹</category>
      <category>백준</category>
      <category>프로그래밍</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/253</guid>
      <comments>https://mun-coding.tistory.com/253#entry253comment</comments>
      <pubDate>Tue, 9 Jul 2024 13:25:32 +0900</pubDate>
    </item>
    <item>
      <title>백준 6064 c++ 카잉달력</title>
      <link>https://mun-coding.tistory.com/252</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/6064&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/6064&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720495205920&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

int get_count;

int gcd(int x,int y) {
	if (y &amp;gt; x)
	{
		int tmp = x;
		x = y;
		y = tmp;
	}
	while ((x % y) != 0)
	{
		x = x % y;
		int tmp = x;
		x = y;
		y = tmp;
	}
	return y;
}

int lcm(int x,int y)
{
	return x * y / gcd(x, y);
}

int main()
{
	cin &amp;gt;&amp;gt; get_count;
	while (get_count--)
	{
		int m, n, x, y;
		cin &amp;gt;&amp;gt; m &amp;gt;&amp;gt; n &amp;gt;&amp;gt; x &amp;gt;&amp;gt; y;
		int limit = lcm(m, n);

		int result = -1;
		for (int i = x; i &amp;lt;= limit; i = i + m)
		{
			if ((i-y)%n == 0)
			{
				result = i;
				break;
			}
		}
		cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; '\n';

	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>GCD</category>
      <category>LCM</category>
      <category>백준</category>
      <category>카잉달력</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/252</guid>
      <comments>https://mun-coding.tistory.com/252#entry252comment</comments>
      <pubDate>Tue, 9 Jul 2024 12:21:36 +0900</pubDate>
    </item>
    <item>
      <title>14500 - 테트로미노</title>
      <link>https://mun-coding.tistory.com/251</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14500&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14500&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1719206172579&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int n, m;

int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
int result = 0;
int arr[500][500];
bool visit[500][500];

void dfs(int count, int sum, int row, int col)
{
	if (count == 4)
	{
		if (result &amp;lt; sum)
		{
			result = sum;
		}
		return;
	}
	for (int i = 0; i &amp;lt; 4; i++)
	{
		int next_row = row + dx[i];
		int next_col = col + dy[i];
		if (next_row &amp;lt; 0 || next_col &amp;lt; 0 || next_row &amp;gt;= n || next_col &amp;gt;= m) // 범위 벗어나면
			continue;
		if (visit[next_row][next_col]) // 방문햇어도 스킵
			continue;
		visit[next_row][next_col] = true;
		dfs(count + 1, sum + arr[next_row][next_col], next_row, next_col);
		visit[next_row][next_col] = false;
	}
}


void Tshape(int row, int col) {
	int sum;

	// ㅗ 모양
	if (row - 1 &amp;gt;= 0 &amp;amp;&amp;amp; col - 1 &amp;gt;= 0 &amp;amp;&amp;amp; col + 1 &amp;lt; m) {
		sum = arr[row][col] + arr[row - 1][col] + arr[row][col - 1] + arr[row][col + 1];
		if (sum &amp;gt; result) result = sum;
	}

	// ㅜ 모양
	if (row + 1 &amp;lt; n &amp;amp;&amp;amp; col - 1 &amp;gt;= 0 &amp;amp;&amp;amp; col + 1 &amp;lt; m) {
		sum = arr[row][col] + arr[row + 1][col] + arr[row][col - 1] + arr[row][col + 1];
		if (sum &amp;gt; result) result = sum;
	}

	// ㅓ 모양
	if (row - 1 &amp;gt;= 0 &amp;amp;&amp;amp; row + 1 &amp;lt; n &amp;amp;&amp;amp; col + 1 &amp;lt; m) {
		sum = arr[row][col] + arr[row - 1][col] + arr[row + 1][col] + arr[row][col + 1];
		if (sum &amp;gt; result) result = sum;
	}

	// ㅏ 모양
	if (row - 1 &amp;gt;= 0 &amp;amp;&amp;amp; row + 1 &amp;lt; n &amp;amp;&amp;amp; col - 1 &amp;gt;= 0) {
		sum = arr[row][col] + arr[row - 1][col] + arr[row + 1][col] + arr[row][col - 1];
		if (sum &amp;gt; result) result = sum;
	}
}

int main()
{
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];
		}
	}
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			visit[i][j] = true;
			dfs(0,0,i,j);
			visit[i][j] = false;
			Tshape(i, j);
		}
	}
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/251</guid>
      <comments>https://mun-coding.tistory.com/251#entry251comment</comments>
      <pubDate>Mon, 24 Jun 2024 14:16:17 +0900</pubDate>
    </item>
    <item>
      <title>1107 - 리모컨 c++</title>
      <link>https://mun-coding.tistory.com/250</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1107&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1107&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719205570041&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;algorithm&amp;gt;


using namespace std;

int n; // 이동하고자 하는 채널
int m; // 고장난 버튼 개수
bool ban[10];

int main()
{
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	for (int i = 0; i &amp;lt; m; i++)
	{
		int a;
		cin &amp;gt;&amp;gt; a;
		ban[a] = true;
	}

	if (n == 100) // 이미 목표일 때
	{
		cout &amp;lt;&amp;lt; 0;
		return 0;
	}
	if (m == 10) // 다 고장 났을 때
	{
		cout &amp;lt;&amp;lt; abs(n - 100);
		return 0;
	}
	int upper, lower;
	for (upper = n; upper &amp;lt; 999999; upper++)
	{
		string str = to_string(upper);
		bool pass = true;
		for (int i = 0; i &amp;lt; str.size(); i++)
		{
			if (ban[str[i] - '0']) // 고장난 버튼이 있으면 break
			{
				pass = false;
				break;
			}
		}
		if (pass)
			break;
	}

	for (lower = n; lower &amp;gt;= 0; lower--)
	{
		string str = to_string(lower);
		bool pass = true;
		for (int i = 0; i &amp;lt; str.size(); i++)
		{
			if (ban[str[i] - '0']) // 고장난 버튼이 있으면 break
			{
				pass = false;
				break;
			}
		}
		if (pass)
			break;
	} 
	if (lower &amp;lt; 0) // lower 가 음수가 될 수도 있기 때문에
	{
		lower = 999999;
	}

	int result = min((int)min(abs(n - lower) + to_string(lower).size() , abs(n - upper) + to_string(upper).size()), abs(n - 100));

	cout &amp;lt;&amp;lt; result;
	return 0;
}

// 1. 한번에 그 근처로 이동하는 경우
// 1-1. 해당 목표의 위로
// 1-2. 해당 목표의 아래로
// 2. + - 만으로 이동하는 경우
// 3. 100이 들어온 경우
// 4. 다 고장났을 경우&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/코테준비-기초 c++</category>
      <category>C++</category>
      <category>리모컨</category>
      <category>알고리즘</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/250</guid>
      <comments>https://mun-coding.tistory.com/250#entry250comment</comments>
      <pubDate>Mon, 24 Jun 2024 14:06:27 +0900</pubDate>
    </item>
    <item>
      <title>백준 1476 c++ 날짜 계산</title>
      <link>https://mun-coding.tistory.com/249</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1476&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1476&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706491368374&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1476번: 날짜 계산&quot; data-og-description=&quot;준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는&amp;nbsp;나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1476&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1476&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dksVcA/hyVb46JPd2/PZ2o5mNYXlKHKFmmyN8UR1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1476&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1476&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dksVcA/hyVb46JPd2/PZ2o5mNYXlKHKFmmyN8UR1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1476번: 날짜 계산&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는&amp;nbsp;나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706491372864&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int maxRange = 15 * 28 * 19;
vector&amp;lt;vector&amp;lt;bool&amp;gt;&amp;gt; arr(3, vector&amp;lt;bool&amp;gt;(maxRange, false));

void check(int n, int ESB)
{
	for (int i = n; i &amp;lt;= maxRange; i = i + ESB)
	{
		if (ESB == 15)
		{
			arr[0][i] = true;
		}
		else if (ESB == 28)
		{
			arr[1][i] = true;
		}
		else if (ESB == 19)
		{
			arr[2][i] = true;
		}
	}
}

int main()
{
	//입력
	int E, S, M;
	cin &amp;gt;&amp;gt; E &amp;gt;&amp;gt; S &amp;gt;&amp;gt; M;

	//알고리즘 
	check(E, 15);
	check(S, 28);
	check(M, 19);
	
	//출력	
	for (int i = 1; i &amp;lt;= maxRange; i++)
	{
		if (arr[0][i] &amp;amp;&amp;amp; arr[1][i] &amp;amp;&amp;amp; arr[2][i])
		{
			cout &amp;lt;&amp;lt; i;
			break;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지구&amp;nbsp;/&amp;nbsp;태양&amp;nbsp;/&amp;nbsp;달 &lt;br /&gt;E&amp;nbsp;/&amp;nbsp;S&amp;nbsp;/&amp;nbsp;M&amp;nbsp;&amp;nbsp;&amp;lt;1&amp;nbsp;&amp;le;&amp;nbsp;E&amp;nbsp;&amp;le;&amp;nbsp;15,&amp;nbsp;1&amp;nbsp;&amp;le;&amp;nbsp;S&amp;nbsp;&amp;le;&amp;nbsp;28,&amp;nbsp;1&amp;nbsp;&amp;le;&amp;nbsp;M&amp;nbsp;&amp;le;&amp;nbsp;19&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;1&amp;nbsp;/&amp;nbsp;2&amp;nbsp;/&amp;nbsp;3&amp;nbsp;이&amp;nbsp;주어졋다고&amp;nbsp;하면 &lt;br /&gt;1에&amp;nbsp;15를&amp;nbsp;계속&amp;nbsp;더해감 &lt;br /&gt;2에&amp;nbsp;28를&amp;nbsp;계속&amp;nbsp;더해감 &lt;br /&gt;3에&amp;nbsp;19를&amp;nbsp;계속&amp;nbsp;더해감 &lt;br /&gt;&lt;br /&gt;어느&amp;nbsp;순간&amp;nbsp;같아지는&amp;nbsp;값이&amp;nbsp;있을&amp;nbsp;것 &lt;/p&gt;</description>
      <category>백준 c++</category>
      <category>1476</category>
      <category>C++</category>
      <category>백준</category>
      <category>브루트포스</category>
      <category>알고리즘</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/249</guid>
      <comments>https://mun-coding.tistory.com/249#entry249comment</comments>
      <pubDate>Mon, 29 Jan 2024 10:23:24 +0900</pubDate>
    </item>
    <item>
      <title>백준 3085 c++ 사탕 게임</title>
      <link>https://mun-coding.tistory.com/248</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/3085&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706434599874&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;3085번: 사탕 게임&quot; data-og-description=&quot;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwqb07/hyVb6Xzcsn/ek8Kx76nu8MaCXz9lKSRxK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwqb07/hyVb6Xzcsn/ek8Kx76nu8MaCXz9lKSRxK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;3085번: 사탕 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706434605436&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int maxCnt = 0;
vector&amp;lt;vector&amp;lt;char&amp;gt;&amp;gt; arr;
int n;

void checkMax()
{
	//가로 체크
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; n - 1; j++)
		{
			char tmp = arr[i][j];
			int localMax = 1;
			while (tmp == arr[i][j + 1]) // 다음거랑 같다면
			{
				if (j + 1 == n - 1)
				{
					localMax++;
					break;
				}
				localMax++;
				j++;
			}
			if (maxCnt &amp;lt; localMax)
			{
				maxCnt = localMax;
			}
		}
	}
	//세로 체크
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; n - 1; j++)
		{
			char tmp = arr[j][i];
			int localMax = 1;
			while (tmp == arr[j+1][i]) // 다음거랑 같다면
			{
				if (j + 1 == n - 1)
				{
					localMax++;
					break;
				}
				localMax++;
				j++;
			}
			if (maxCnt &amp;lt; localMax)
			{
				maxCnt = localMax;
			}
		}
	}
}

void changeRow()
{
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; n - 1; j++)
		{
			char tmp = arr[i][j]; // 1회 교환
			arr[i][j] = arr[i][j + 1];
			arr[i][j + 1] = tmp;
			checkMax();
			arr[i][j + 1] = arr[i][j]; //원상복구
			arr[i][j] = tmp;
		}
	}
}

void changeCol()
{
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; n - 1; j++)
		{
			char tmp = arr[j][i]; // 1회 교환
			arr[j][i] = arr[j+1][i];
			arr[j+1][i] = tmp;
			checkMax();
			arr[j+1][i] = arr[j][i]; //원상복구
			arr[j][i] = tmp;
		}
	}
}

int main()
{
	cin &amp;gt;&amp;gt; n;
	arr = vector&amp;lt;vector&amp;lt;char&amp;gt;&amp;gt;(n,vector&amp;lt;char&amp;gt;(n,0));
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; n; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];
		}
	}
	changeRow();
	changeCol();
	cout &amp;lt;&amp;lt; maxCnt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 번 교체&lt;/b&gt; &amp;gt; &lt;b&gt;가장 긴 연속 색 체크&amp;nbsp;&lt;/b&gt;&amp;gt; &lt;b&gt;다시 교체하여 원상복구&lt;/b&gt;&lt;/p&gt;</description>
      <category>백준 c++</category>
      <category>3085</category>
      <category>C++</category>
      <category>백준</category>
      <category>브루트포스</category>
      <category>알고리즘</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/248</guid>
      <comments>https://mun-coding.tistory.com/248#entry248comment</comments>
      <pubDate>Sun, 28 Jan 2024 18:38:03 +0900</pubDate>
    </item>
    <item>
      <title>백준 2309 일곱 난쟁이 c++</title>
      <link>https://mun-coding.tistory.com/247</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2309&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706356668780&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2309번: 일곱 난쟁이&quot; data-og-description=&quot;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TDD3K/hyVcaerM4E/4kCEpx89ZxZ4RioHSqEPFk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2309&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TDD3K/hyVcaerM4E/4kCEpx89ZxZ4RioHSqEPFk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2309번: 일곱 난쟁이&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706356670368&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int main()
{
	int arr[9];
	int sum = 0;
	for (int i = 0; i &amp;lt; 9; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
		sum += arr[i];
	}
	
	int not_nan = sum - 100;

	int n1, n2;

	sort(arr,arr+9);

	//난장이 아닌 애들 찾기
	for (int i = 0; i &amp;lt; 9; i++)
	{
		for (int j = i+1; j &amp;lt; 9; j++)
		{
			if (arr[i] + arr[j] == not_nan)
			{
				n1 = i;
				n2 = j;
			}
		}
	}

	for (int i = 0; i &amp;lt; 9; i++)
	{
		if ((i == n1) || (i == n2))
			continue;
		cout &amp;lt;&amp;lt; arr[i] &amp;lt;&amp;lt; '\n';
	}

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/247</guid>
      <comments>https://mun-coding.tistory.com/247#entry247comment</comments>
      <pubDate>Sat, 27 Jan 2024 20:57:53 +0900</pubDate>
    </item>
    <item>
      <title>백준 6588 c++ 골드바흐의 추측</title>
      <link>https://mun-coding.tistory.com/246</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/6588&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/6588&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706352995922&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;6588번: 골드바흐의 추측&quot; data-og-description=&quot;각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/6588&quot; data-og-url=&quot;https://www.acmicpc.net/problem/6588&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TzFKR/hyU8TSWX1l/FxkWhWv7pwci2AluxCNOT0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/6588&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/6588&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TzFKR/hyU8TSWX1l/FxkWhWv7pwci2AluxCNOT0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;6588번: 골드바흐의 추측&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706353035567&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ㅁ#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

vector&amp;lt;bool&amp;gt; prime(1000001,true);

void era()
{
	for (long long i = 2; i*i &amp;lt;= 1000000; i++)
	{
		for (long long j = i * i; j &amp;lt;= 1000000; j += i)
		{
			prime[j] = false;
		}
	}
}

int main()
{
	era();
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio(false);
	while (1)
	{
		long long n = 0;
		cin &amp;gt;&amp;gt; n;
		if (n == 0)
			break;
		for (long long i = 2; i &amp;lt;= n; i++)
		{
			if ((prime[i] == true) &amp;amp;&amp;amp; (prime[n - i] == true))
			{
				cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; &quot; = &quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot; + &quot; &amp;lt;&amp;lt; n - i &amp;lt;&amp;lt;'\n';
				break;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <category>6588</category>
      <category>C++</category>
      <category>골드바흐의 추측</category>
      <category>백준</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/246</guid>
      <comments>https://mun-coding.tistory.com/246#entry246comment</comments>
      <pubDate>Sat, 27 Jan 2024 19:57:48 +0900</pubDate>
    </item>
    <item>
      <title>백준 1929 c++ 소수 구하기</title>
      <link>https://mun-coding.tistory.com/245</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1929&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1929&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706239922678&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1929번: 소수 구하기&quot; data-og-description=&quot;첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 &amp;le; M &amp;le; N &amp;le; 1,000,000)&amp;nbsp;M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1929&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1929&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cdJ0oH/hyU8U5cjFb/0lOHNSkh1sFHX96qRRSKh1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1929&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1929&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cdJ0oH/hyU8U5cjFb/0lOHNSkh1sFHX96qRRSKh1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1929번: 소수 구하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 &amp;le; M &amp;le; N &amp;le; 1,000,000)&amp;nbsp;M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706239925686&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

vector&amp;lt;bool&amp;gt; prime;

void era(unsigned int m_i) {
	prime[1] = false;
	for (int i = 2; i*i &amp;lt;= m_i; i++)
	{
		for (int j = i * i; j &amp;lt;= m_i; j = j + i)
		{
			prime[j] = false;
		}
	}
}

int main()
{
	// 입력
	unsigned int n, m;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	prime = vector&amp;lt;bool&amp;gt;(m + 1, true);
	era(m);
	for (int i = n; i &amp;lt;= m; i++)
	{
		if (prime[i])
			cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; '\n';
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <category>1929</category>
      <category>C++</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>에라토스테네스의 체</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/245</guid>
      <comments>https://mun-coding.tistory.com/245#entry245comment</comments>
      <pubDate>Fri, 26 Jan 2024 12:32:20 +0900</pubDate>
    </item>
    <item>
      <title>백준 1978 c++ 소수 찾기</title>
      <link>https://mun-coding.tistory.com/244</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1978&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1978&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706239361438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1978번: 소수 찾기&quot; data-og-description=&quot;첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1978&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1978&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bqqFjW/hyU8Ys1KNw/INgNVOKXgekr3NyRpHlJQ0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1978&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1978&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bqqFjW/hyU8Ys1KNw/INgNVOKXgekr3NyRpHlJQ0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1978번: 소수 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706239367716&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

vector&amp;lt;bool&amp;gt; prime(1001, true);

void era(int num) {
	prime[1] = false;
	for (int i = 2; i*i &amp;lt;= num; i++)
	{
		for (int j = i * i; j &amp;lt;= num; j = j + i)
		{
			prime[j] = false;
		}
	}
}

int main()
{
	era(1000);
	// 입력
	int n;
	cin &amp;gt;&amp;gt; n;
	vector&amp;lt;int&amp;gt; arr;
	int ans = 0;
	for (int i = 0; i &amp;lt; n; i++)
	{
		int input;
		cin &amp;gt;&amp;gt; input;
		if (prime[input] == true)
		{
			ans++;
		}
	}
	cout &amp;lt;&amp;lt; ans;
	
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <category>C++</category>
      <category>백준</category>
      <category>소수</category>
      <category>알고리즘</category>
      <category>에라토스테네스의 체</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/244</guid>
      <comments>https://mun-coding.tistory.com/244#entry244comment</comments>
      <pubDate>Fri, 26 Jan 2024 12:23:06 +0900</pubDate>
    </item>
    <item>
      <title>백준 2609 c++ 최대공약수와 최소공배수</title>
      <link>https://mun-coding.tistory.com/243</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2609&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2609&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706163904061&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2609번: 최대공약수와 최소공배수&quot; data-og-description=&quot;첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2609&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2609&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2609&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2609&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2609번: 최대공약수와 최소공배수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706163906032&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int gcd(int big, int small)
{
	while (big % small)
	{
		int tmp = big % small;
		big = small;
		small = tmp;
	}
	return small;
}

int lcm(int big,int small,int gcd_p)
{
	return big * small / gcd_p;
}

int main()
{
	int b, s;
	cin &amp;gt;&amp;gt; b &amp;gt;&amp;gt; s;
	int gcd_o = gcd(b, s);
	cout &amp;lt;&amp;lt; gcd(b, s) &amp;lt;&amp;lt;'\n' &amp;lt;&amp;lt; lcm(b, s, gcd_o);

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/243</guid>
      <comments>https://mun-coding.tistory.com/243#entry243comment</comments>
      <pubDate>Thu, 25 Jan 2024 15:25:15 +0900</pubDate>
    </item>
    <item>
      <title>백준 17425 c++ 약수의 합</title>
      <link>https://mun-coding.tistory.com/242</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17425&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/17425&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706163216953&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;17425번: 약수의 합&quot; data-og-description=&quot;두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/17425&quot; data-og-url=&quot;https://www.acmicpc.net/problem/17425&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5GqkP/hyVb1VL8nz/CVRp8iuiucBasTskFJ3xsk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17425&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/17425&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5GqkP/hyVb1VL8nz/CVRp8iuiucBasTskFJ3xsk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;17425번: 약수의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1706163275713&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	vector&amp;lt;long long&amp;gt; g(1000001, 0);

	for (long long i = 1; i &amp;lt;= 1000000; i++)
	{
		for (long long j = i; j &amp;lt;= 1000000; j = j + i) // j는 i의 배수
		{
			g[j] = g[j] + i; //여기는 일단 f() 단계 j의 모든 약수의 합
		}
		g[i] = g[i - 1] + g[i]; // g[i] = g[i - 1] + f[i] 의 의미
	}

	int t;
	cin &amp;gt;&amp;gt; t;
	while (t--)
	{
		int n;
		cin &amp;gt;&amp;gt; n;
		cout &amp;lt;&amp;lt; g[n]&amp;lt;&amp;lt;'\n';
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준 c++</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/242</guid>
      <comments>https://mun-coding.tistory.com/242#entry242comment</comments>
      <pubDate>Thu, 25 Jan 2024 15:15:03 +0900</pubDate>
    </item>
    <item>
      <title>백준 17427 c++ 약수의 합 2</title>
      <link>https://mun-coding.tistory.com/241</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17427&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/17427&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706157979924&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;17427번: 약수의 합 2&quot; data-og-description=&quot;두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/17427&quot; data-og-url=&quot;https://www.acmicpc.net/problem/17427&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/btX80P/hyU81JRGvb/NHfo05qpIXQnXBfkKukcek/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17427&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/17427&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/btX80P/hyU81JRGvb/NHfo05qpIXQnXBfkKukcek/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;17427번: 약수의 합 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706157989390&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

int main()
{
	long long n;
	cin &amp;gt;&amp;gt; n;
	long long ans = 0;
	for (long long i = 1; i &amp;lt;= n; i++)
	{
		ans = ans + (n / i) * i;
	}
	cout &amp;lt;&amp;lt; ans;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;규칙성을 찾아야 하는 문제&lt;/p&gt;</description>
      <category>17427</category>
      <category>C++</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>약수의 합</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/241</guid>
      <comments>https://mun-coding.tistory.com/241#entry241comment</comments>
      <pubDate>Thu, 25 Jan 2024 14:12:02 +0900</pubDate>
    </item>
    <item>
      <title>백준 16926 c++ 배열 돌리기 1</title>
      <link>https://mun-coding.tistory.com/240</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16926&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/16926&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1705979316374&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16926번: 배열 돌리기 1&quot; data-og-description=&quot;크기가 N&amp;times;M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] &amp;larr; A[1][2] &amp;larr; A[1][3] &amp;larr; A[1][4] &amp;larr; A[1][5] &amp;darr; &amp;uarr; A[2][1] A[2][2] &amp;larr; A[2][3] &amp;larr; A[2][4] A[2][5] &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16926&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16926&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dS0HaV/hyU84zhdqV/ynCrVZl43qja13MnQ8S5Gk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16926&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16926&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dS0HaV/hyU84zhdqV/ynCrVZl43qja13MnQ8S5Gk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16926번: 배열 돌리기 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;크기가 N&amp;times;M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] &amp;larr; A[1][2] &amp;larr; A[1][3] &amp;larr; A[1][4] &amp;larr; A[1][5] &amp;darr; &amp;uarr; A[2][1] A[2][2] &amp;larr; A[2][3] &amp;larr; A[2][4] A[2][5]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1705979353303&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

void rotate(int depth, vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;&amp;amp; inputArr, int row, int col)
{
	vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; tmp(row, vector&amp;lt;int&amp;gt;(col, 0));
	for (int k = 0; k &amp;lt; depth; k++)
	{
		int r1 = k;
		int c1 = k;
		int r2 = row - k - 1;
		int c2 = col - k - 1;
		//좌
		for (int i = r2 - 1; i &amp;gt;= r1; i--)
		{
			tmp[i + 1][c1] = inputArr[i][c1];
		}
		//하
		for (int i = c2 - 1; i &amp;gt;= c1; i--)
		{
			tmp[r2][i + 1] = inputArr[r2][i];
		}
		//우
		for (int i = r1 + 1; i &amp;lt;= r2; i++)
		{
			tmp[i - 1][c2] = inputArr[i][c2];
		}
		//상
		for (int i = c1 + 1; i &amp;lt;= c2; i++)
		{
			tmp[r1][i - 1] = inputArr[r1][i];
		}
	}
	inputArr = tmp;
}

int main()
{
	int n, m, r;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m &amp;gt;&amp;gt; r;
	vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; arr(n,vector&amp;lt;int&amp;gt;(m,0));
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];
		}
	}
	int minL = min(n, m);
	if (!(minL % 2 == 0)) // 2로 안나누어지면 return
		return 0;
	
	int cnt = minL / 2; //총 cnt 만큼의 묶음이 나옴
	
	while (r--)
	{
		rotate(cnt, arr, n, m);
	}
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			cout &amp;lt;&amp;lt; arr[i][j]&amp;lt;&amp;lt;' ';
		}
		cout &amp;lt;&amp;lt; '\n';
	}


}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 하드코딩을 상하좌우로 해주면 된다&lt;/p&gt;</description>
      <category>백준 c++</category>
      <category>16926</category>
      <category>C++</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/240</guid>
      <comments>https://mun-coding.tistory.com/240#entry240comment</comments>
      <pubDate>Tue, 23 Jan 2024 12:10:05 +0900</pubDate>
    </item>
    <item>
      <title>백준 1037 c++ 약수</title>
      <link>https://mun-coding.tistory.com/239</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1037&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1037&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1705973722581&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1037번: 약수&quot; data-og-description=&quot;첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1037&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1037&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKZX0p/hyU84lKDZS/YAENvGkDHwFA1kJTOktOS1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1037&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1037&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKZX0p/hyU84lKDZS/YAENvGkDHwFA1kJTOktOS1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1037번: 약수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1705973736355&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

void sortArr(vector&amp;lt;long long&amp;gt; &amp;amp;inputarr)
{
	for (int i = 0; i &amp;lt; inputarr.size(); i++)
	{
		for (int j = 1; j &amp;lt; inputarr.size(); j++)
		{
			if (inputarr[j - 1] &amp;gt; inputarr[j]) //앞이 뒤보다 크다면
			{
				int temp = 0;//임시
				temp = inputarr[j - 1];
				inputarr[j - 1] = inputarr[j];
				inputarr[j] = temp;
			}
		}
	}
}

int main()
{
	int n = 0; //약수의 개수
	cin &amp;gt;&amp;gt; n;
	vector&amp;lt;long long&amp;gt; arr(n, 0);
	//배열 입력 받기
	for (int i = 0; i &amp;lt; n; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
	}

	int ans; //정답
	//약수가 하나만 있을 경우
	if (n == 1)
	{
		ans = arr[0] * arr[0];
	}
	else //정렬 해야함
	{
		sortArr(arr);
		ans = arr[0] * arr[n - 1];
	}
	cout &amp;lt;&amp;lt; ans;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열을 정렬 후 약수 중 (&lt;b&gt;가장 작은 수 * 가장 큰 수) = N&lt;/b&gt;이다.&lt;/p&gt;</description>
      <category>백준 c++</category>
      <category>1037</category>
      <category>C++</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>약수</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/239</guid>
      <comments>https://mun-coding.tistory.com/239#entry239comment</comments>
      <pubDate>Tue, 23 Jan 2024 10:36:28 +0900</pubDate>
    </item>
    <item>
      <title>백준 4375 c++ 1</title>
      <link>https://mun-coding.tistory.com/238</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4375&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/4375&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1705889434943&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;4375번: 1&quot; data-og-description=&quot;2와 5로 나누어 떨어지지 않는 정수 n(1 &amp;le; n &amp;le; 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/4375&quot; data-og-url=&quot;https://www.acmicpc.net/problem/4375&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jI0Lf/hyU8QUXIHM/KU1qzj2KziBWuAHJRSOWdK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4375&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/4375&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jI0Lf/hyU8QUXIHM/KU1qzj2KziBWuAHJRSOWdK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;4375번: 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2와 5로 나누어 떨어지지 않는 정수 n(1 &amp;le; n &amp;le; 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/57rey/btsDKPeQEpq/bhDF9K0F1Vgj20IMgByQdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/57rey/btsDKPeQEpq/bhDF9K0F1Vgj20IMgByQdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/57rey/btsDKPeQEpq/bhDF9K0F1Vgj20IMgByQdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F57rey%2FbtsDKPeQEpq%2FbhDF9K0F1Vgj20IMgByQdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1453&quot; height=&quot;884&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;x % n = (x % n) % n&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1705889463944&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;

int main()
{
	int n;
	while (cin &amp;gt;&amp;gt; n)
	{
		int one = 1;
		long long ans = 1;
		while (1)
		{
			if (one % n == 0)
			{
				cout &amp;lt;&amp;lt; ans &amp;lt;&amp;lt; '\n';
				break;
			}
			else
			{
				ans++;
				one = one * 10 + 1;
				one = one % n;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <category>4375</category>
      <category>C++</category>
      <category>나누기</category>
      <category>백준</category>
      <category>수학</category>
      <category>알고리즘</category>
      <category>코테</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/238</guid>
      <comments>https://mun-coding.tistory.com/238#entry238comment</comments>
      <pubDate>Mon, 22 Jan 2024 11:11:57 +0900</pubDate>
    </item>
    <item>
      <title>백준 2904 c++ 수학은 너무 쉬워</title>
      <link>https://mun-coding.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2904&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2904&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1678370822980&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2904번: 수학은 너무 쉬워&quot; data-og-description=&quot;첫째 줄에 N이 주어진다. (1 &amp;le; N &amp;le; 100) 둘째 줄에는 종이에 적혀있는 수 N개가 주어진다. 수는 모두 1,000,000보다 작거나 같은 양의 정수이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2904&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2904&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LGZmI/hyRSU0Wgh9/5DEKlF9TbLbaSEws9g36F0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2904&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2904&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LGZmI/hyRSU0Wgh9/5DEKlF9TbLbaSEws9g36F0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2904번: 수학은 너무 쉬워&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N이 주어진다. (1 &amp;le; N &amp;le; 100) 둘째 줄에는 종이에 적혀있는 수 N개가 주어진다. 수는 모두 1,000,000보다 작거나 같은 양의 정수이다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상근이의 할머니는 매우 유명한 수학자이다.&lt;span&gt; &lt;/span&gt;할머니는 매일 수학 문제로 상근이를 힘들게 한다. 할머니는 종이 N장에 숫자를 하나씩 쓴 다음 상근이에게 준다. 그 다음 상근이는 다음과 같이 문제를 풀어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 수 A와 B를 고르고, A를 나눌 수 있는 소수 X를 고른다. 그 다음, A를 지우고 A/X를 쓰고, B를 지우고 B&amp;times;X를 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상근이는 위의 행동을 무한히 반복할 수 있다. 할머니는 상근이가 만든 수를 보고 점수를 계산한다. 점수가 높을수록 할머니는 상근이에게 사탕을 많이 준다. 점수는 종이에 적혀있는 모든 수의 최대공약수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상근이가 얻을 수 있는 가장 높은 점수를 구하는 프로그램을 작성하시오. 또, 그 점수를 얻으려면 최소 몇 번 해야 하는지도 구한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N이 주어진다. (1 &amp;le; N &amp;le; 100) 둘째 줄에는 종이에 적혀있는 수 N개가 주어진다. 수는 모두 1,000,000보다 작거나 같은 양의 정수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 상근이가 얻을 수 있는 가장 큰 점수와 최소 몇 번 만에 그 점수를 얻을 수 있는지를 출력한다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HrIoZ/btr21AYAqh5/vxOpJhWvQJtSpqNkcStgkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HrIoZ/btr21AYAqh5/vxOpJhWvQJtSpqNkcStgkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HrIoZ/btr21AYAqh5/vxOpJhWvQJtSpqNkcStgkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHrIoZ%2Fbtr21AYAqh5%2FvxOpJhWvQJtSpqNkcStgkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1269&quot; height=&quot;540&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1678371677186&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;cmath&amp;gt;

using namespace std;

int N;
bool isPrime[1000001];//소수 판별
vector&amp;lt;int&amp;gt; prime;

void Era()
{
	memset(isPrime, true, sizeof(isPrime));//일단 다 true로
	isPrime[0] = false;
	isPrime[1] = false;
	for (int i = 2; i &amp;lt;= 1000000; i++)
	{
		for (int j = i+i; j &amp;lt;= 1000000; j = j+i)
		{
			isPrime[j] = false;
		}
	}
	for (int i = 2; i &amp;lt;= 1000000; i++)
	{
		if (isPrime[i])
			prime.push_back(i);
	}
}

int main()
{
	Era();//에라토스테네스의 체 소수판별
	cin &amp;gt;&amp;gt; N;
	vector&amp;lt;int&amp;gt; card(N,0);//입력 받을 카드

	//전체적으로 해당 소수가 사용된 횟수
	vector&amp;lt;int&amp;gt;allPrimeCnt(prime.size(), 0);
	//2중 배열 numPrimeCount[a][b] = 3 // a번쨰 수를 소인수분해 했을 때 소수 b가 3개 있음
	vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; numPrimeCount(N, vector&amp;lt;int&amp;gt;(prime.size(), 0));

	for (int i = 0; i &amp;lt; N; i++)
	{
		cin &amp;gt;&amp;gt; card[i];
	}

	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; prime.size(); j++)
		{
			while (card[i] % prime[j] == 0)//소수로 나누어 떨어지면
			{
				allPrimeCnt[j]++;//해당 소수는 사용되었으므로 증가
				numPrimeCount[i][j]++;//해당 카드에 사용된 소수 증가
				card[i] = card[i] / prime[j];
			}
		}
	}

	int score = 1;//최대 점수
	int moveCount = 0;//소수 이동 카운트
	for (int i = 0; i &amp;lt; prime.size(); i++)
	{
		if (allPrimeCnt[i] / N &amp;gt; 0)//만약 소수를 N카드에 모두 분배할 수 있다면
		{
			int need = allPrimeCnt[i] / N;
			score = score * pow(prime[i],need);

			for (int j = 0; j &amp;lt; N; j++)
			{
				if (numPrimeCount[j][i] &amp;lt; need)
				{
					moveCount = moveCount + (need - numPrimeCount[j][i]);
				}
			}
		}
	}

	cout &amp;lt;&amp;lt; score &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; moveCount;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++</category>
      <category>2904</category>
      <category>C++</category>
      <category>백준</category>
      <category>수학은 너무 쉬워</category>
      <category>에라토스테네스의 체</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/237</guid>
      <comments>https://mun-coding.tistory.com/237#entry237comment</comments>
      <pubDate>Thu, 9 Mar 2023 23:21:50 +0900</pubDate>
    </item>
    <item>
      <title>백준 16954 c++ 움직이는 미로 탈출</title>
      <link>https://mun-coding.tistory.com/236</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16954&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16954&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677828232966&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16954번: 움직이는 미로 탈출&quot; data-og-description=&quot;욱제는 학교 숙제로 크기가 8&amp;times;8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은&amp;nbsp;빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16954&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16954&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cnD2il/hyRNJGaD3h/Bj7NBtkzQvKgpI0dhkJItK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16954&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16954&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cnD2il/hyRNJGaD3h/Bj7NBtkzQvKgpI0dhkJItK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16954번: 움직이는 미로 탈출&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;욱제는 학교 숙제로 크기가 8&amp;times;8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은&amp;nbsp;빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;욱제는 학교 숙제로 크기가 8&amp;times;8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은&amp;nbsp;빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 윗 칸으로 이동해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 게임의 특징은 벽이 움직인다는 점이다. 1초마다&amp;nbsp;모든 벽이 아래에 있는&amp;nbsp;행으로 한 칸씩 내려가고, 가장 아래에 있어서 아래에 행이 없다면 벽이 사라지게 된다. 욱제의 캐릭터는 1초에 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 이동할 때는 빈 칸으로만 이동할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1초 동안 욱제의 캐릭터가 먼저 이동하고, 그 다음 벽이 이동한다. 벽이 캐릭터가 있는 칸으로 이동하면 더 이상 캐릭터는 이동할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;욱제의 캐릭터가 가장 오른쪽 윗 칸으로 이동할 수 있는지 없는지 구해보자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8개 줄에 걸쳐서 체스판의 상태가 주어진다. '.'은 빈 칸, '#'는 벽이다. 가장 왼쪽 아랫칸은 항상 벽이 아니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;욱제의 캐릭터가 가장 오른쪽 윗 칸에 도착할 수 있으면 1, 없으면 0을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P3NFR/btr1UUDybPY/Ihpuk2rN9mEyb3ckxR7k50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P3NFR/btr1UUDybPY/Ihpuk2rN9mEyb3ckxR7k50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P3NFR/btr1UUDybPY/Ihpuk2rN9mEyb3ckxR7k50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP3NFR%2Fbtr1UUDybPY%2FIhpuk2rN9mEyb3ckxR7k50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1446&quot; height=&quot;791&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rP9Yx/btr1USFJzLB/3qwuKEoZ60MG75R7l3xL60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rP9Yx/btr1USFJzLB/3qwuKEoZ60MG75R7l3xL60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rP9Yx/btr1USFJzLB/3qwuKEoZ60MG75R7l3xL60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrP9Yx%2Fbtr1USFJzLB%2F3qwuKEoZ60MG75R7l3xL60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1436&quot; height=&quot;791&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pwfup/btr1IqRDpZD/30ANCggjQeR7NH7Ebg60q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pwfup/btr1IqRDpZD/30ANCggjQeR7NH7Ebg60q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pwfup/btr1IqRDpZD/30ANCggjQeR7NH7Ebg60q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwfup%2Fbtr1IqRDpZD%2F30ANCggjQeR7NH7Ebg60q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1447&quot; height=&quot;397&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1677828395839&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

//상하좌우, 대각선, 제자리
int dx[9] = {1,-1,0,0,1,1,-1,-1,0};
int dy[9] = {0,0,1,-1,-1,1,-1,1,0};

char map[8][8];
bool visit[8][8][20];

struct group
{
	int row;
	int col;
	int count; // count에 따라 캐릭터가 이동하고 벽이 내려옴
};

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({7,0,0});
	visit[7][0][0] = true;
	while (!q.empty())
	{
		int nowX = q.front().row;
		int nowY = q.front().col;
		int nowCount = q.front().count;
		q.pop();
		for (int i = 0; i &amp;lt; 9; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if (nextX == 0 &amp;amp;&amp;amp; nextY == 7)//다음 칸이 목표 칸이면
			{
				cout &amp;lt;&amp;lt; 1;
				return;
			}
			if (visit[nextX][nextY][nowCount + 1])
				continue;
			//범위 벗어나면 스킵
			if (nextX &amp;lt; 0 || nextX &amp;gt;= 8 || nextY &amp;lt; 0 || nextY &amp;gt;= 8)
				continue;
			//가려는 칸이 벽이라면 스킵
			if (map[nextX - nowCount][nextY] == '#' &amp;amp;&amp;amp; nextX - nowCount &amp;gt;= 0)
				continue;
			//이동한다음 벽을 마주친다면
			if (map[nextX - nowCount - 1][nextY] == '#' &amp;amp;&amp;amp; nextX - nowCount - 1 &amp;gt;= 0)
				continue;
			//위 조건들에 해당 안된다면
			visit[nextX][nextY][nowCount + 1] = true;
			q.push({ nextX, nextY, nowCount + 1 });
		}
	}
	cout &amp;lt;&amp;lt; 0;
}

int main()
{
	for (int i = 0; i &amp;lt; 8; i++)
	{
		for (int j = 0; j &amp;lt; 8; j++)
		{
			cin &amp;gt;&amp;gt; map[i][j];
		}
	}

	bfs();
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16954</category>
      <category>BFS</category>
      <category>C++</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>움직이는 미로 탈출</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/236</guid>
      <comments>https://mun-coding.tistory.com/236#entry236comment</comments>
      <pubDate>Sat, 4 Mar 2023 17:27:19 +0900</pubDate>
    </item>
    <item>
      <title>백준 16933 c++ 벽 부수고 이동하기 3</title>
      <link>https://mun-coding.tistory.com/235</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16933&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16933&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677809498030&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16933번: 벽 부수고 이동하기 3&quot; data-og-description=&quot;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16933&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16933&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16933&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16933&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16933번: 벽 부수고 이동하기 3&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 이동하지 않고 같은 칸에 머물러있는 경우도 가능하다. 이 경우도 방문한 칸의 개수가 하나 늘어나는 것으로 생각해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 문제에서는 낮과 밤이 번갈아가면서 등장한다. 가장 처음에 이동할 때는 낮이고, 한 번 이동할 때마다 낮과 밤이 바뀌게 된다. 이동하지 않고 같은&amp;nbsp;칸에 머무르는 경우에도 낮과 밤이 바뀌게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 이동하는 도중에 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 K개 까지 부수고 이동하여도 된다. 단, 벽은 낮에만 부술 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 최단 거리를 출력한다. 불가능할 때는 -1을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boW5sq/btr1KPW5LzD/XKGvRwwfHudXAOiQf04Xik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boW5sq/btr1KPW5LzD/XKGvRwwfHudXAOiQf04Xik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boW5sq/btr1KPW5LzD/XKGvRwwfHudXAOiQf04Xik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboW5sq%2Fbtr1KPW5LzD%2FXKGvRwwfHudXAOiQf04Xik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1458&quot; height=&quot;784&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;363&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFFO5x/btr1KQhn6Ck/7lZKJXUF61CYShyVeXrn8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFFO5x/btr1KQhn6Ck/7lZKJXUF61CYShyVeXrn8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFFO5x/btr1KQhn6Ck/7lZKJXUF61CYShyVeXrn8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFFO5x%2Fbtr1KQhn6Ck%2F7lZKJXUF61CYShyVeXrn8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1442&quot; height=&quot;363&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;363&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1677810335278&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int N, M, K;
int map[1001][1001];
bool visit[1001][1001][11];//row, col, 벽을 부순 횟수

int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };

int result = -1;

struct group
{
	int row;
	int col;
	int count;
	int destroy;
	int day;
};

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({ 0,0,1,0,0 });//day = 0 낮 / day = 1 밤
	visit[0][0][0] = true;//0,0까지 0번 벽을 뚫고 감
	while (!q.empty())
	{
		int nowX = q.front().row;//현재 행
		int nowY = q.front().col;//현재 열
		int nowCount = q.front().count;//현재 칸 까지 이동 카운트
		int nowDestroy = q.front().destroy;//현재까지 벽을 부순 횟수
		int nowDay = q.front().day;//0이면 낮 / 1이면 밤
		q.pop();

		if ((nowX == N - 1) &amp;amp;&amp;amp; (nowY == M - 1))//목표 지점 도달
		{
			result = nowCount;
			return;
		}

		for (int i = 0; i &amp;lt; 4; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if ((nextX &amp;lt; 0 || nextX &amp;gt;= N) || (nextY &amp;lt; 0 || nextY &amp;gt;= M))//다음 칸이 범위 벗어나면 스킵
				continue;

			//다음칸이 통로일 때
			if (map[nextX][nextY] == 0)
			{
				if (visit[nextX][nextY][nowDestroy] == false)//방문한적 없다면
				{
					visit[nextX][nextY][nowDestroy] = true;//방문처리
					if (nowDay == 0)//현재 낮이라면
						q.push({ nextX, nextY, nowCount + 1, nowDestroy, 1 });
					else//현재 밤이라면
						q.push({ nextX, nextY, nowCount + 1, nowDestroy, 0 });
				}
			}
			//다음칸이 벽일 때
			else if (map[nextX][nextY] == 1)
			{
				if (nowDestroy &amp;lt; K)//현재 벽 부순 횟수가 K보다 작을때만
				{
					if (visit[nextX][nextY][nowDestroy + 1] == false)//다음칸을 방문하지 않았다면
					{
						if (nowDay == 0)//현재 낮이라면
						{
							visit[nextX][nextY][nowDestroy + 1] = true;
							q.push({ nextX, nextY, nowCount + 1, nowDestroy + 1, 1 });
                            //다음칸으로 갈 때 밤으로 바뀌므로 1넣음
						}
						else//현재 밤이라면
						{
							q.push({ nowX,nowY,nowCount + 1,nowDestroy,0 });
                            //다음칸으로 갈 때 밤으로 바뀌므로 0넣음
						}
					}
				}
			}
		}
	}
}

int main()
{
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M &amp;gt;&amp;gt; K;
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			scanf(&quot;%1d&quot;, &amp;amp;map[i][j]); //공백이 없어도 숫자 하나씩만 입력받기
		}
	}

	bfs();

	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16933</category>
      <category>BFS</category>
      <category>C++</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <category>벽부수고이동하기3</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/235</guid>
      <comments>https://mun-coding.tistory.com/235#entry235comment</comments>
      <pubDate>Fri, 3 Mar 2023 11:25:40 +0900</pubDate>
    </item>
    <item>
      <title>백준 14442 c++ 벽 부수고 이동하기 2</title>
      <link>https://mun-coding.tistory.com/234</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14442&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1676738127322&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;14442번: 벽 부수고 이동하기 2&quot; data-og-description=&quot;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14442&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YXDah/hyRFYPFL3e/8PR7AjVVvAx0Y46XbcXiI0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YXDah/hyRFYPFL3e/8PR7AjVVvAx0Y46XbcXiI0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;14442번: 벽 부수고 이동하기 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 이동하는 도중에 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 K개 까지 부수고 이동하여도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000), K(1 &amp;le; K &amp;le; 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 최단 거리를 출력한다. 불가능할 때는 -1을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lPil5/btrZLUGhdMJ/BHK4b2Vbf6Q3Uyo5kyBDVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lPil5/btrZLUGhdMJ/BHK4b2Vbf6Q3Uyo5kyBDVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lPil5/btrZLUGhdMJ/BHK4b2Vbf6Q3Uyo5kyBDVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlPil5%2FbtrZLUGhdMJ%2FBHK4b2Vbf6Q3Uyo5kyBDVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1295&quot; height=&quot;907&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1676738188580&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;queue&amp;gt;
using namespace std;
 
int N, M, K;
int map[1001][1001];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
bool visit[1001][1001][10];

int result = -1;

struct group
{
	int row;
	int col;
	int count;
	int destroy;
};

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({ 0,0,1,0 });
	visit[0][0][0] = true;//0,0까지 0번 벽을 뚫고 감
	while (!q.empty())
	{
		int nowX = q.front().row;
		int nowY = q.front().col;
		int nowCount = q.front().count;
		int nowDestroy = q.front().destroy;
		q.pop();

		if ((nowX == N - 1) &amp;amp;&amp;amp; (nowY == M - 1))//목표 지점 도달
		{
			result = nowCount;
			return;
		}

		for (int i = 0; i &amp;lt; 4; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if ((nextX &amp;lt; 0 || nextX &amp;gt;= N) || (nextY &amp;lt; 0 || nextY &amp;gt;= M))//다음 칸이 범위 벗어나면 스킵
				continue;
			if (visit[nextX][nextY][nowDestroy] == true)//다음 칸까지 nowDestroy만큼 뚫고 간 적 있다면 스킵
				continue;
			if (map[nextX][nextY] == 0)//다음이 통로라면
			{
				visit[nextX][nextY][nowDestroy] = true;
				q.push({ nextX,nextY,nowCount + 1, nowDestroy });
			}
			if (map[nextX][nextY] == 1 &amp;amp;&amp;amp; nowDestroy&amp;lt;K)//다음 칸이 벽이고 벽을 K만큼 안부쉈다면
			{
				visit[nextX][nextY][nowDestroy + 1] = true;
				q.push({ nextX,nextY,nowCount + 1, nowDestroy + 1 });
			}
		}
	}
}

int main()
{
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M &amp;gt;&amp;gt; K;
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			scanf(&quot;%1d&quot;, &amp;amp;map[i][j]); //공백이 없어도 숫자 하나씩만 입력받기
		}
	}

	bfs();

	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/234</guid>
      <comments>https://mun-coding.tistory.com/234#entry234comment</comments>
      <pubDate>Sun, 19 Feb 2023 01:36:38 +0900</pubDate>
    </item>
    <item>
      <title>백준 16946 c++ 벽 부수고 이동하기 4</title>
      <link>https://mun-coding.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16946&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16946&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1676467327912&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16946번: 벽 부수고 이동하기 4&quot; data-og-description=&quot;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16946&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16946&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16946&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16946&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16946번: 벽 부수고 이동하기 4&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 변을 공유할 때, 인접하다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 벽에 대해서 다음을 구해보려고 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;벽을 부수고 이동할 수 있는 곳으로 변경한다.&lt;/li&gt;
&lt;li&gt;그 위치에서 이동할 수 있는 칸의 개수를 세어본다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맵의 형태로 정답을 출력한다. 원래 빈 칸인 곳은 0을 출력하고, 벽인&amp;nbsp;곳은 이동할 수 있는 칸의 개수를 10으로 나눈 나머지를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf4g88/btrZop8XhTQ/r2vd8Dkxm10WVHuMlasCKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf4g88/btrZop8XhTQ/r2vd8Dkxm10WVHuMlasCKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf4g88/btrZop8XhTQ/r2vd8Dkxm10WVHuMlasCKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf4g88%2FbtrZop8XhTQ%2Fr2vd8Dkxm10WVHuMlasCKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1272&quot; height=&quot;489&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1676467367893&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;cstring&amp;gt;
using namespace std;

int N, M;
int map[1001][1001];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
bool visit[1001][1001];

void bfs(int row, int col)
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; q;
	vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; v;
	q.push(make_pair(row,col));
	visit[row][col] = true;
	int result = 1;
	while (!q.empty())
	{
		int nowX = q.front().first;
		int nowY = q.front().second;
		q.pop();

		for (int i = 0; i &amp;lt; 4; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if ((nextX &amp;lt; 0 || nextX &amp;gt;= N) || (nextY &amp;lt; 0 || nextY &amp;gt;= M))//범위 벗어나면 스킵
				continue;

			if (map[nextX][nextY] == 0 &amp;amp;&amp;amp; visit[nextX][nextY] == false) //다음 칸이 방문한 적 없는 통로이면
			{
				q.push(make_pair(nextX, nextY));
				visit[nextX][nextY] = true;
				result++;
			}
			if (map[nextX][nextY] != 0 &amp;amp;&amp;amp; visit[nextX][nextY] == false)//다음 칸이 방문한 적 없는 벽이라면
			{
				v.push_back(make_pair(nextX, nextY));
				visit[nextX][nextY] = true;
			}
		}
	}
	for (int i = 0; i &amp;lt; v.size(); i++)
	{
		map[v[i].first][v[i].second] += result;
		visit[v[i].first][v[i].second] = false;
	}
}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			scanf(&quot;%1d&quot;, &amp;amp;map[i][j]); //공백이 없어도 숫자 하나씩만 입력받기
		}
	}

	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			if (map[i][j] != 0)//현재칸이 통로가 아니면 스킵
				continue;
			if (visit[i][j])//현재칸이 0이지만 방문했다면 스킵
				continue;
			bfs(i, j); //0이고 방문안한 곳에서 bfs 실행
		}
	}
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			cout &amp;lt;&amp;lt; map[i][j] % 10;
		}
		cout &amp;lt;&amp;lt; '\n';
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. map을 탐색하며 0인 부분에서 bfs실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. bfs실행하여 상하좌우 탐색하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-1 =&amp;gt; 0을 만났을 때 count++&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-2 =&amp;gt; 1을 만났을 때 vector안에 벽 정보를 넣음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;bfs함수가 끝날 때 bfs에서 탐색한 0들에 인접한 벽에 대해 (2-2에서 vector에 넣었던 벽들) 지금까지&amp;nbsp; count값을 더해준다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16946</category>
      <category>C++</category>
      <category>백준</category>
      <category>벽 부수고 이동하기 4</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/233</guid>
      <comments>https://mun-coding.tistory.com/233#entry233comment</comments>
      <pubDate>Wed, 15 Feb 2023 22:26:13 +0900</pubDate>
    </item>
    <item>
      <title>백준 2206 c++ 벽 부수고 이동하기</title>
      <link>https://mun-coding.tistory.com/232</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2206&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2206&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1676097137553&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2206번: 벽 부수고 이동하기&quot; data-og-description=&quot;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2206&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2206&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxx0k4/hyRzyxZXlb/9e2U0uMy6hS4ddGV0VqkS1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2206&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2206&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxx0k4/hyRzyxZXlb/9e2U0uMy6hS4ddGV0VqkS1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2206번: 벽 부수고 이동하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;times;M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 1,000), M(1 &amp;le; M &amp;le; 1,000)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 최단 거리를 출력한다. 불가능할 때는 -1을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CXbSB/btrYT8yv8Bs/qxPmRRKUsuh7NoMKFCuE3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CXbSB/btrYT8yv8Bs/qxPmRRKUsuh7NoMKFCuE3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CXbSB/btrYT8yv8Bs/qxPmRRKUsuh7NoMKFCuE3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCXbSB%2FbtrYT8yv8Bs%2FqxPmRRKUsuh7NoMKFCuE3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1275&quot; height=&quot;590&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1676097250116&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int N, M;
int map[1001][1001];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
bool visit[1001][1001][2];

int result = -1;

struct group
{
	int row;
	int col;
	int count;
	int destroy;
};

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({0,0,1,0});
	visit[0][0][0] = true;
	while (!q.empty())
	{
		int nowX = q.front().row;
		int nowY = q.front().col;
		int nowCount = q.front().count;
		int nowDestroy = q.front().destroy;
		q.pop();

		if ((nowX == N-1) &amp;amp;&amp;amp; (nowY == M-1))//목표 지점 도달
		{
			result = nowCount;
			return;
		}

		for (int i = 0; i &amp;lt; 4; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if ((nextX &amp;lt; 0 || nextX &amp;gt;= N) || (nextY &amp;lt; 0 || nextY &amp;gt;= M))//범위 벗어나면 스킵
				continue;
			if (map[nextX][nextY] == 1 &amp;amp;&amp;amp; nowDestroy == 0)//다음 칸이 벽이고 벽을 부순적이 없다면
			{
				visit[nextX][nextY][nowDestroy+1] = true;
				q.push({ nextX,nextY,nowCount + 1, nowDestroy + 1 });
			}
			if(map[nextX][nextY] == 0 &amp;amp;&amp;amp; !visit[nextX][nextY][nowDestroy])//다음이 통로고 간 적 없다면
			{
				visit[nextX][nextY][nowDestroy] = true;
				q.push({ nextX,nextY,nowCount + 1, nowDestroy });
			}
		}
	}
}

int main()
{
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			scanf(&quot;%1d&quot;, &amp;amp;map[i][j]); //공백이 없어도 숫자 하나씩만 입력받기
		}
	}

	bfs();

	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>2206</category>
      <category>C++</category>
      <category>백준</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/232</guid>
      <comments>https://mun-coding.tistory.com/232#entry232comment</comments>
      <pubDate>Sat, 11 Feb 2023 15:34:28 +0900</pubDate>
    </item>
    <item>
      <title>백준 12886 c++ 돌 그룹</title>
      <link>https://mun-coding.tistory.com/231</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/12886&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/12886&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675993432906&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;12886번: 돌 그룹&quot; data-og-description=&quot;오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/12886&quot; data-og-url=&quot;https://www.acmicpc.net/problem/12886&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fEJd6/hyRzxdK0e7/TDr8wRrW8Kvi8PRibVZSdk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/12886&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/12886&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fEJd6/hyRzxdK0e7/TDr8wRrW8Kvi8PRibVZSdk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;12886번: 돌 그룹&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강호는 돌을 단계별로 움직이며, 각 단계는 다음과 같이 이루어져 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크기가 같지 않은 두 그룹을 고른다. 그 다음, 돌의 개수가 작은 쪽을 X, 큰 쪽을 Y라고 정한다. 그 다음, X에 있는 돌의 개수를 X+X개로, Y에 있는 돌의 개수를 Y-X개로 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A, B, C가 주어졌을 때, 강호가 돌을 같은 개수로 만들 수 있으면 1을, 아니면 0을 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 A, B, C가 주어진다. (1 &amp;le; A, B, C &amp;le; 500)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌을 같은 개수로 만들 수 있으면 1을, 아니면 0을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rSPpV/btrYH27BDlg/6AEb5aInFfJ9ZlDtOH1XI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rSPpV/btrYH27BDlg/6AEb5aInFfJ9ZlDtOH1XI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rSPpV/btrYH27BDlg/6AEb5aInFfJ9ZlDtOH1XI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrSPpV%2FbtrYH27BDlg%2F6AEb5aInFfJ9ZlDtOH1XI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1434&quot; height=&quot;346&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;틀린코드(메모리 초과)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1675993487442&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int a, b, c;
int result = 0;
bool visit[1501][1501][1501];

struct group
{
	int A;
	int B;
	int C;
};//먼저 그룹 3개를 만듬

void pick(int&amp;amp; small, int&amp;amp; big)
{
	if (small == big)
		return;
	if (small &amp;gt; big)
	{
		int tmp = big;
		big = small;
		small = tmp;
	}
	big = big - small;
	small = small * 2;

}

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({ a,b,c });
	visit[a][b][c] = true;
	while (!q.empty())
	{
		int nowA = q.front().A;
		int nowB = q.front().B;
		int nowC = q.front().C;//3가지 현재 그룹 지정
		q.pop();
		if ((nowA == nowB) &amp;amp;&amp;amp; (nowA == nowC))// 3개 같으면 리턴
		{
			result = 1;
			return;
		}
		for (int i = 0; i &amp;lt; 3; i++)
		{
			int nextA = nowA;
			int nextB = nowB;
			int nextC = nowC;
			if (i == 0)
			{
				pick(nextA, nextB);
				if (visit[nextA][nextB][nextC])
					continue;
				cout &amp;lt;&amp;lt; nextA &amp;lt;&amp;lt; nextB &amp;lt;&amp;lt; nextC &amp;lt;&amp;lt; '\n';
				visit[nextA][nextB][nextC] = true;
				q.push({ nextA, nextB, nextC });
			}
			if (i == 1)
			{
				pick(nextA, nextC);
				if (visit[nextA][nextB][nextC])
					continue;
				cout &amp;lt;&amp;lt; nextA &amp;lt;&amp;lt; nextB &amp;lt;&amp;lt; nextC &amp;lt;&amp;lt; '\n';
				visit[nextA][nextB][nextC] = true;
				q.push({ nextA, nextB, nextC });
			}
			if (i == 2)
			{
				pick(nextB, nextC);
				if (visit[nextA][nextB][nextC])
					continue;
				cout &amp;lt;&amp;lt; nextA &amp;lt;&amp;lt; nextB &amp;lt;&amp;lt; nextC &amp;lt;&amp;lt; '\n';
				visit[nextA][nextB][nextC] = true;
				q.push({ nextA, nextB, nextC });
			}
		}
	}
	return;
}

int main()
{
	cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; c;
	bfs();
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;맞은 코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1675994362644&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int a, b, c;
int result = 0;
bool visit[1501][1501];
int sum;

struct group
{
	int A;
	int B;
};//2개만 만들어도 됨

void pick(int&amp;amp; small, int&amp;amp; big)
{
	if (small == big)
		return;
	if (small &amp;gt; big)
	{
		int tmp = big;
		big = small;
		small = tmp;
	}
	big = big - small;
	small = small * 2;

}

void bfs()
{
	queue&amp;lt;group&amp;gt; q;
	q.push({ a,b });
	visit[a][b] = true;
	while (!q.empty())
	{
		int nowA = q.front().A;
		int nowB = q.front().B;//3가지 현재 그룹 지정 // C는 자동 배정 sum - a - b
		q.pop();
		if ((nowA == nowB) &amp;amp;&amp;amp; (nowA == sum-nowA-nowB))// 3개 같으면 리턴
		{
			result = 1;
			return;
		}
		for (int i = 0; i &amp;lt; 3; i++)
		{
			int nextA = nowA;
			int nextB = nowB;
			int nextC = sum - nowA - nowB;
			if (i == 0)
			{
				pick(nextA, nextB);
				if (visit[nextA][nextB])
					continue;
				visit[nextA][nextB] = true;
				q.push({ nextA, nextB });
			}
			if (i == 1)
			{
				pick(nextA, nextC);
				if (visit[nextA][nextC])
					continue;
				visit[nextA][nextC] = true;
				q.push({ nextA, nextC });
			}
			if (i == 2)
			{
				pick(nextB, nextC);
				if (visit[nextB][nextC])
					continue;
				visit[nextB][nextC] = true;
				q.push({ nextB, nextC });
			}
		}
	}
	return;
}

int main()
{
	cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; c;
	sum = a + b + c;
	bfs();
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;틀린코드에서는 struct를 활용하여 큐에 변수 3개를 넣었고, A,B,C각각 체크?방문을 기록하는 bool형 배열 역시 3차원으로 체크하였다보니 메모리초과가 나서 틀렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맞은 코드드에서는 3개의 그룹 중 2개의 값이 정해지면 나머지 하나는 자동적으로 sum - a - b로 정해진다는 것을 이용하여 struct의 변수 개수를 줄이고 visit 배열 역시 2차원으로 줄여 메모리를 줄였다.&lt;/p&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>12886</category>
      <category>BFS</category>
      <category>C++</category>
      <category>너비우선탐색</category>
      <category>돌 그룹</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/231</guid>
      <comments>https://mun-coding.tistory.com/231#entry231comment</comments>
      <pubDate>Fri, 10 Feb 2023 11:43:16 +0900</pubDate>
    </item>
    <item>
      <title>백준 14502 c++ 연구소</title>
      <link>https://mun-coding.tistory.com/230</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14502&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675952416255&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;14502번: 연구소&quot; data-og-description=&quot;인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14502&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14502&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/epVwny/hyRzxYDIqi/TqaTub11Hfp8e4o59XsVYK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14502&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/epVwny/hyRzxYDIqi/TqaTub11Hfp8e4o59XsVYK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;14502번: 연구소&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구소는 크기가 N&amp;times;M인 직사각형으로 나타낼 수 있으며, 직사각형은 1&amp;times;1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자.&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;2 0 0 0 1 1 0
0 0 1 0 1 2 0
0 1 1 0 1 0 0
0 1 0 0 0 0 0
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 0은 빈 칸, 1은 벽, 2는 바이러스가 있는 곳이다. 아무런 벽을 세우지 않는다면, 바이러스는 모든 빈 칸으로 퍼져나갈 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2행 1열, 1행 2열, 4행 6열에 벽을 세운다면 지도의 모양은 아래와 같아지게 된다.&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;2 1 0 0 1 1 0
1 0 1 0 1 2 0
0 1 1 0 1 0 0
0 1 0 0 0 1 0
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이러스가 퍼진 뒤의 모습은 아래와 같아진다.&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;2 1 0 0 1 1 2
1 0 1 0 1 2 2
0 1 1 0 1 2 2
0 1 0 0 0 1 2
0 0 0 0 0 1 1
0 1 0 0 0 0 0
0 1 0 0 0 0 0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벽을 3개 세운 뒤, 바이러스가 퍼질 수 없는 곳을 안전 영역이라고 한다. 위의 지도에서 안전 영역의 크기는 27이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구소의 지도가 주어졌을 때 얻을 수 있는 안전 영역 크기의 최댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. (3 &amp;le; N, M &amp;le; 8)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄부터 N개의 줄에 지도의 모양이 주어진다. 0은 빈 칸, 1은 벽, 2는 바이러스가 있는 위치이다. 2의 개수는 2보다 크거나 같고, 10보다 작거나 같은 자연수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 칸의 개수는 3개 이상이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 얻을 수 있는 안전 영역의 최대 크기를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;999&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sXQLI/btrYKuO4hV7/GB6xkARszEYLMnuHKjSKK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sXQLI/btrYKuO4hV7/GB6xkARszEYLMnuHKjSKK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sXQLI/btrYKuO4hV7/GB6xkARszEYLMnuHKjSKK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsXQLI%2FbtrYKuO4hV7%2FGB6xkARszEYLMnuHKjSKK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1275&quot; height=&quot;999&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;999&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675952475255&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int N, M;
int map[8][8];

int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };



int bfs()//바이러스 퍼지게 하는거
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; q;
	int copyMap[8][8];
	//맵 카피
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			copyMap[i][j] = map[i][j];
		}
	}

	//바이러스의 처음 위치 찾아서 q에 넣자
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			if (map[i][j] == 2)
			{
				q.push(make_pair(i, j));
			}
		}
	}
	while (!q.empty())
	{
		int nowX = q.front().first;
		int nowY = q.front().second;
		q.pop();
		for (int i = 0; i &amp;lt; 4; i++)
		{
			int nextX = nowX + dx[i];
			int nextY = nowY + dy[i];
			if ((nextX &amp;lt; 0 || nextX &amp;gt;= N) || (nextY &amp;lt; 0 || nextY &amp;gt;= M))//범위 벗어났으면 continue
				continue;
			if (copyMap[nextX][nextY] == 0)//만약 바이러스 인접 칸이 0이라면 해당칸을 바이러스로 바꾸고 queue에 넣자
			{
				copyMap[nextX][nextY] = 2;
				q.push(make_pair(nextX, nextY));
			}
		}
	}
	int count = 0;
	//반복문 끝나면 0개수 세기
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			if (copyMap[i][j] == 0)
				count++;
		}
	}
	return count;
}

int result = 0;

void dfs(int count)
{
	if (count == 3)//3칸 다 채움
	{
		result = max(result, bfs());
		return;
	}
	
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			if (map[i][j] == 0)
			{
				map[i][j] = 1;
				dfs(count + 1);
				map[i][j] = 0;
			}
		}
	}
	return;
}

int main()
{
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			cin &amp;gt;&amp;gt; map[i][j];
		}
	}
	dfs(0);
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>14502</category>
      <category>BFS</category>
      <category>C++</category>
      <category>DFS</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>연구소</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/230</guid>
      <comments>https://mun-coding.tistory.com/230#entry230comment</comments>
      <pubDate>Thu, 9 Feb 2023 23:21:39 +0900</pubDate>
    </item>
    <item>
      <title>백준 9019 c++ DSLR</title>
      <link>https://mun-coding.tistory.com/229</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9019&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/9019&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675835630721&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;9019번: DSLR&quot; data-og-description=&quot;네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9019&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9019&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bBx8Rd/hyRx1zh7sv/PjvgxQ2AwX0J08X8ZhKsc1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9019&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9019&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bBx8Rd/hyRx1zh7sv/PjvgxQ2AwX0J08X8ZhKsc1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;9019번: DSLR&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 저장된 n을 다음과 같이 변환한다. n의 네 자릿수를 d1, d2, d3, d4라고 하자(즉 n = ((d1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;times; 10 + d2) &amp;times; 10 + d3) &amp;times; 10 + d4라고 하자)&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;D: D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다.&lt;/li&gt;
&lt;li&gt;S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다.&lt;/li&gt;
&lt;li&gt;L: L 은 n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. 이 연산이 끝나면 레지스터에 저장된 네 자릿수는 왼편부터 d2, d3, d4, d1이 된다.&lt;/li&gt;
&lt;li&gt;R: R 은 n의 각 자릿수를 오른편으로 회전시켜 그 결과를 레지스터에 저장한다. 이 연산이 끝나면 레지스터에 저장된 네 자릿수는 왼편부터 d4, d1, d2, d3이 된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 것처럼, L 과 R 명령어는 십진 자릿수를 가정하고 연산을 수행한다. 예를 들어서 n = 1234 라면 여기에 L 을 적용하면 2341 이 되고 R 을 적용하면 4123 이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분이 작성할 프로그램은 주어진 서로 다른 두 정수 A와 B(A &amp;ne; B)에 대하여 A를 B로 바꾸는 최소한의 명령어를 생성하는 프로그램이다. 예를 들어서 A = 1234, B = 3412 라면 다음과 같이 두 개의 명령어를 적용하면 A를 B로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1234 &amp;rarr;L&lt;span&gt;&amp;nbsp;&lt;/span&gt;2341 &amp;rarr;L&lt;span&gt;&amp;nbsp;&lt;/span&gt;3412&lt;br /&gt;1234 &amp;rarr;R&lt;span&gt;&amp;nbsp;&lt;/span&gt;4123 &amp;rarr;R&lt;span&gt;&amp;nbsp;&lt;/span&gt;3412&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 여러분의 프로그램은 이 경우에 LL 이나 RR 을 출력해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n의 자릿수로 0 이 포함된 경우에 주의해야 한다. 예를 들어서 1000 에 L 을 적용하면 0001 이 되므로 결과는 1 이 된다. 그러나 R 을 적용하면 0100 이 되므로 결과는 100 이 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램 입력은 T 개의 테스트 케이스로 구성된다. 테스트 케이스 개수 T 는 입력의 첫 줄에 주어진다. 각 테스트 케이스로는 두 개의 정수 A와 B(A &amp;ne; B)가 공백으로 분리되어 차례로 주어지는데 A는 레지스터의 초기 값을 나타내고 B는 최종 값을 나타낸다. A 와 B는 모두 0 이상 10,000 미만이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A에서 B로 변환하기 위해 필요한 최소한의 명령어 나열을 출력한다. 가능한 명령어 나열이 여러가지면, 아무거나 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drNswi/btrYsOuCh5k/RWw42BS08SlQ1BHNHu2pB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drNswi/btrYsOuCh5k/RWw42BS08SlQ1BHNHu2pB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drNswi/btrYsOuCh5k/RWw42BS08SlQ1BHNHu2pB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrNswi%2FbtrYsOuCh5k%2FRWw42BS08SlQ1BHNHu2pB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1446&quot; height=&quot;263&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675835700043&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;cstring&amp;gt;
using namespace std;

bool visit[10001];


int D(int num)
{
	num = num * 2;
	if (num &amp;gt; 9999)
	{
		return num % 10000;
	}
	else
		return num;
}

int S(int num)
{
	if (num == 0)
	{
		return 9999;
	}
	else
		return num - 1;
}

int L(int num)
{
	return (num % 1000) * 10 + (num / 1000);
}

int R(int num)
{
	return num / 10 + (num % 10) * 1000;

}

void bfs(int start, int target)
{
	queue&amp;lt;pair&amp;lt;int,string&amp;gt;&amp;gt; q; //현재 숫자, 현재 숫자에 오기까지 과정
	q.push(make_pair(start,&quot;&quot;));
	visit[start] = true;
	while (!q.empty())
	{
		int root = q.front().first;
		string str = q.front().second;

		q.pop();
		if (root == target)
		{
			cout &amp;lt;&amp;lt; str &amp;lt;&amp;lt;'\n';
			return;
		}
		for (int i = 0; i &amp;lt; 4; i++)
		{
			int now = root;
			if (i == 0)
			{
				int next = D(now);
				if (visit[next])
					continue;
				q.push(make_pair(next,str + &quot;D&quot;));
				visit[next] = true;
			}
			if (i == 1)
			{
				int next = S(now);
				if (visit[next])
					continue;
				q.push(make_pair(next, str + &quot;S&quot;));
				visit[next] = true;
			}
			if (i == 2)
			{
				int next = L(now);
				if (visit[next])
					continue;
				q.push(make_pair(next, str + &quot;L&quot;));
				visit[next] = true;
			}
			if (i == 3)
			{
				int next = R(now);
				if (visit[next])
					continue;
				q.push(make_pair(next, str + &quot;R&quot;));
				visit[next] = true;
			}
		}
	}
	return;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

	int T;
	cin &amp;gt;&amp;gt; T;
	while (T--)
	{
		int start, target;
		cin &amp;gt;&amp;gt; start &amp;gt;&amp;gt; target;
		memset(visit, false, sizeof(visit));
		bfs(start, target);
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>BFS</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/229</guid>
      <comments>https://mun-coding.tistory.com/229#entry229comment</comments>
      <pubDate>Wed, 8 Feb 2023 14:55:16 +0900</pubDate>
    </item>
    <item>
      <title>백준 16948 c++ 데스 나이트</title>
      <link>https://mun-coding.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16948&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16948&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675735288562&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16948번: 데스 나이트&quot; data-og-description=&quot;게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 &amp;quot;데스 나이트&amp;quot;를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면,&amp;nbsp;(r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16948&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16948&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16948&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16948&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16948번: 데스 나이트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 &quot;데스 나이트&quot;를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면,&amp;nbsp;(r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 &quot;데스 나이트&quot;를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면,&amp;nbsp;(r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크기가 N&amp;times;N인 체스판과 두 칸 (r1, c1), (r2, c2)가 주어진다. 데스 나이트가 (r1, c1)에서 (r2, c2)로 이동하는 최소 이동 횟수를 구해보자. 체스판의 행과 열은 0번부터 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데스 나이트는 체스판 밖으로 벗어날 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 체스판의 크기 N(5 &amp;le; N &amp;le; 200)이 주어진다. 둘째 줄에 r1, c1, r2, c2가 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 데스 나이트가 (r1, c1)에서 (r2, c2)로 이동하는 최소 이동 횟수를 출력한다. 이동할 수 없는 경우에는 -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1443&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQsSIj/btrYg97cReB/S9sdXcQG0GKv2W5bKIR0Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQsSIj/btrYg97cReB/S9sdXcQG0GKv2W5bKIR0Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQsSIj/btrYg97cReB/S9sdXcQG0GKv2W5bKIR0Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQsSIj%2FbtrYg97cReB%2FS9sdXcQG0GKv2W5bKIR0Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1443&quot; height=&quot;618&quot; data-origin-width=&quot;1443&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675735424374&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int N;
int r1, c1, r2, c2;
int visit[200][200];
int dx[] = { -2,-2,0,0,2,2 };
int dy[] = { -1,1,-2,2,-1,1 };
bool found;

void bfs()
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;q;
	q.push(make_pair(r1, c1));

	while (!q.empty())
	{
		int nowR = q.front().first;
		int nowC = q.front().second;
		q.pop();
		int count = visit[nowR][nowC] + 1;

		for (int i = 0; i &amp;lt; 6; i++)
		{
			int nextR = nowR + dx[i];
			int nextC = nowC + dy[i];
			if ((nextR &amp;lt; 0 || nextR &amp;gt;= N) || (nextC &amp;lt; 0 || nextC &amp;gt;= N))//범위 밖이면 스킵
				continue;
			if (visit[nextR][nextC] != 0)//이미 차있으면
				continue;
			if (nextR == r2 &amp;amp;&amp;amp; nextC == c2)//다음이 답이면?
			{
				found = true;
				visit[r2][c2] = count;
				return;
			}
			visit[nextR][nextC] = count;
			q.push(make_pair(nextR, nextC));
		}
	}
	return;
}

int main()
{
	cin &amp;gt;&amp;gt; N;
	cin &amp;gt;&amp;gt; r1 &amp;gt;&amp;gt; c1 &amp;gt;&amp;gt; r2 &amp;gt;&amp;gt; c2;
	bfs();
	if (found == true)
		cout &amp;lt;&amp;lt; visit[r2][c2];
	else
		cout &amp;lt;&amp;lt; -1;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16948</category>
      <category>BFS</category>
      <category>C++</category>
      <category>너비우선탐색</category>
      <category>데스나이트</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/228</guid>
      <comments>https://mun-coding.tistory.com/228#entry228comment</comments>
      <pubDate>Tue, 7 Feb 2023 11:04:10 +0900</pubDate>
    </item>
    <item>
      <title>백준 16928 c++ 뱀과 사다리 게임</title>
      <link>https://mun-coding.tistory.com/227</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16928&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16928&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675647501374&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16928번: 뱀과 사다리 게임&quot; data-og-description=&quot;첫째 줄에 게임판에 있는 사다리의 수 N(1 &amp;le; N &amp;le; 15)과 뱀의 수 M(1 &amp;le; M &amp;le; 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x &amp;lt; y)가 주어진다. x번 칸에 도착하면, y번 칸으&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16928&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16928&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cpcctJ/hyRwvGFUCV/hXPJJUpG4NOckhTn96ke71/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16928&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16928&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cpcctJ/hyRwvGFUCV/hXPJJUpG4NOckhTn96ke71/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16928번: 뱀과 사다리 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 게임판에 있는 사다리의 수 N(1 &amp;le; N &amp;le; 15)과 뱀의 수 M(1 &amp;le; M &amp;le; 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x &amp;lt; y)가 주어진다. x번 칸에 도착하면, y번 칸으&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Snakes_and_Ladders&quot;&gt;뱀과 사다리 게임&lt;/a&gt;을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10&amp;times;10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 만약 주사위를 굴린 결과가 100번 칸을 넘어간다면 이동할 수 없다. 도착한 칸이 사다리면, 사다리를 타고 위로 올라간다. 뱀이 있는 칸에 도착하면, 뱀을 따라서 내려가게 된다. 즉, 사다리를 이용해 이동한 칸의 번호는 원래 있던 칸의 번호보다 크고, 뱀을 이용해 이동한 칸의 번호는 원래 있던 칸의 번호보다 작아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임의 목표는 1번 칸에서 시작해서 100번 칸에 도착하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임판의 상태가 주어졌을 때, 100번 칸에 도착하기 위해 주사위를 굴려야 하는 횟수의 최솟값을 구해보자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 게임판에 있는 사다리의 수 N(1 &amp;le; N &amp;le; 15)과 뱀의 수 M(1 &amp;le; M &amp;le; 15)이 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x &amp;lt; y)가 주어진다. x번 칸에 도착하면, y번 칸으로 이동한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 M개의 줄에는 뱀의 정보를 의미하는 u, v (u &amp;gt; v)가 주어진다. u번 칸에 도착하면, v번 칸으로 이동한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 칸과 100번 칸은 뱀과 사다리의 시작 또는 끝이 아니다. 모든 칸은 최대 하나의 사다리 또는 뱀을 가지고 있으며, 동시에 두 가지를 모두 가지고 있는 경우는 없다. 항상 100번 칸에 도착할 수 있는 입력만 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100번 칸에 도착하기 위해 주사위를 최소 몇 번 굴려야 하는지 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbbwSH/btrX6nDFucO/ITwPoFt2OucWKfwiPO8r1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbbwSH/btrX6nDFucO/ITwPoFt2OucWKfwiPO8r1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbbwSH/btrX6nDFucO/ITwPoFt2OucWKfwiPO8r1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbbwSH%2FbtrX6nDFucO%2FITwPoFt2OucWKfwiPO8r1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1450&quot; height=&quot;613&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGEe96/btrX40hNSXI/b0XAZGKp02oDUyKkvwhHH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGEe96/btrX40hNSXI/b0XAZGKp02oDUyKkvwhHH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGEe96/btrX40hNSXI/b0XAZGKp02oDUyKkvwhHH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGEe96%2FbtrX40hNSXI%2Fb0XAZGKp02oDUyKkvwhHH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1458&quot; height=&quot;760&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675647596288&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int map[107];
bool visit[107];

int L;
int S;

int result;
int ladder[107];
int snake[107];

void bfs()
{
	queue&amp;lt;pair&amp;lt;int,int&amp;gt;&amp;gt; q;
	q.push(make_pair(1, 0)); //첫 칸은 1이고 이동횟수는 0
	visit[1] = true;
	while (!q.empty())
	{
		int start = q.front().first;
		int count = q.front().second;
		q.pop();
		if (start == 100)//시작 칸이 100이면 break
		{
			result = count;
			break;
		}
		for (int i = 1; i &amp;lt;= 6; i++)
		{
			int next = start + i;
			if(ladder[next]!=0)//만약 해당칸에 사다리가 있으면
			{
				next = ladder[next];
			}
			if (snake[next] != 0)//해당칸에 뱀이 있으면
			{
				next = snake[next];
			}
			//다음 칸이 지나간 칸이면 패스
			if (visit[next] == true)
				continue;
			if (next &amp;gt; 100)//다음칸이 100보다 커도 패스
				continue;
			visit[next] = true;
			q.push(make_pair(next,count+1));
		}
	}
}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; L &amp;gt;&amp;gt; S;
	for (int i = 0; i &amp;lt; L; i++)
	{
		int a, b;
		cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b;
		ladder[a] = b;
	}
	for (int i = 0; i &amp;lt; S; i++)
	{
		int a, b;
		cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b;
		snake[a] = b;
	}
	bfs();
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16928</category>
      <category>BFS</category>
      <category>C++</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/227</guid>
      <comments>https://mun-coding.tistory.com/227#entry227comment</comments>
      <pubDate>Mon, 6 Feb 2023 10:40:17 +0900</pubDate>
    </item>
    <item>
      <title>백준 12100 c++ 2048(Easy)</title>
      <link>https://mun-coding.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/12100&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/12100&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675605223700&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;12100번: 2048 (Easy)&quot; data-og-description=&quot;첫째 줄에 보드의 크기 N (1 &amp;le; N &amp;le; 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/12100&quot; data-og-url=&quot;https://www.acmicpc.net/problem/12100&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/j7kxn/hyRwITc0gZ/OIS7K5bNKGbWtd6lFuEhKk/img.png?width=1062&amp;amp;height=1058&amp;amp;face=0_0_1062_1058,https://scrap.kakaocdn.net/dn/3ecgv/hyRvchmk0S/6KePyOsxg4dlfHPe1Ey4z1/img.png?width=1058&amp;amp;height=1056&amp;amp;face=0_0_1058_1056&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/12100&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/12100&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/j7kxn/hyRwITc0gZ/OIS7K5bNKGbWtd6lFuEhKk/img.png?width=1062&amp;amp;height=1058&amp;amp;face=0_0_1062_1058,https://scrap.kakaocdn.net/dn/3ecgv/hyRvchmk0S/6KePyOsxg4dlfHPe1Ey4z1/img.png?width=1058&amp;amp;height=1056&amp;amp;face=0_0_1058_1056');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;12100번: 2048 (Easy)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 보드의 크기 N (1 &amp;le; N &amp;le; 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2048 게임은 4&amp;times;4 크기의 보드에서 혼자 즐기는 재미있는 게임이다. 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://gabrielecirulli.github.io/2048/&quot;&gt;링크&lt;/a&gt;를 누르면 게임을 해볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 게임에서 한 번의 이동은 보드 위에 있는 전체 블록을 상하좌우 네 방향 중 하나로 이동시키는 것이다. 이때, 같은 값을 갖는 두 블록이 충돌하면 두 블록은 하나로 합쳐지게 된다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. (실제 게임에서는 이동을 한 번 할 때마다 블록이 추가되지만, 이 문제에서 블록이 추가되는 경우는 없다)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5XcLI/btrX3tY5LrL/NmzGXnA61m7cIkgv43aoK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5XcLI/btrX3tY5LrL/NmzGXnA61m7cIkgv43aoK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5XcLI/btrX3tY5LrL/NmzGXnA61m7cIkgv43aoK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5XcLI%2FbtrX3tY5LrL%2FNmzGXnA61m7cIkgv43aoK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;347&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;&amp;lt;그림 1&amp;gt;의 경우에서 위로 블록을 이동시키면 &amp;lt;그림 2&amp;gt;의 상태가 된다. 여기서, 왼쪽으로 블록을 이동시키면 &amp;lt;그림 3&amp;gt;의 상태가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHf1UK/btrX4ZiCPOK/sn84FA3I7OErcmUj80CrbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHf1UK/btrX4ZiCPOK/sn84FA3I7OErcmUj80CrbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHf1UK/btrX4ZiCPOK/sn84FA3I7OErcmUj80CrbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHf1UK%2FbtrX4ZiCPOK%2Fsn84FA3I7OErcmUj80CrbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1287&quot; height=&quot;341&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;그림 4&amp;gt;의 상태에서 블록을 오른쪽으로 이동시키면 &amp;lt;그림 5&amp;gt;가 되고, 여기서 다시 위로 블록을 이동시키면 &amp;lt;그림 6&amp;gt;이 된다. 여기서 오른쪽으로 블록을 이동시켜 &amp;lt;그림 7&amp;gt;을 만들 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lVQt1/btrYaoV7Kc9/5RKxAeT9FkwmigtCpT7kek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lVQt1/btrYaoV7Kc9/5RKxAeT9FkwmigtCpT7kek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lVQt1/btrYaoV7Kc9/5RKxAeT9FkwmigtCpT7kek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlVQt1%2FbtrYaoV7Kc9%2F5RKxAeT9FkwmigtCpT7kek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1266&quot; height=&quot;332&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;&amp;lt;그림 8&amp;gt;의 상태에서 왼쪽으로 블록을 옮기면 어떻게 될까? 2가 충돌하기 때문에, 4로 합쳐지게 되고 &amp;lt;그림 9&amp;gt;의 상태가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sVLsD/btrX2YyeDO1/7HpJ30WzV8QqstkO6lkLVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sVLsD/btrX2YyeDO1/7HpJ30WzV8QqstkO6lkLVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sVLsD/btrX2YyeDO1/7HpJ30WzV8QqstkO6lkLVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsVLsD%2FbtrX2YyeDO1%2F7HpJ30WzV8QqstkO6lkLVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1271&quot; height=&quot;341&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;그림 10&amp;gt;에서 위로 블록을 이동시키면 &amp;lt;그림 11&amp;gt;의 상태가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;그림 12&amp;gt;의 경우에 위로 블록을 이동시키면 &amp;lt;그림 13&amp;gt;의 상태가 되는데, 그 이유는 한 번의 이동에서 이미 합쳐진 블록은 또 합쳐질 수 없기 때문이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceydLy/btrYf1ziDVN/fGbPplXP6rqAeHadBcaT01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceydLy/btrYf1ziDVN/fGbPplXP6rqAeHadBcaT01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceydLy/btrYf1ziDVN/fGbPplXP6rqAeHadBcaT01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceydLy%2FbtrYf1ziDVN%2FfGbPplXP6rqAeHadBcaT01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1263&quot; height=&quot;341&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로, 똑같은 수가 세 개가 있는 경우에는 이동하려고 하는 쪽의 칸이 먼저 합쳐진다. 예를 들어, 위로 이동시키는 경우에는 위쪽에 있는 블록이 먼저 합쳐지게 된다. &amp;lt;그림 14&amp;gt;의 경우에 위로 이동하면 &amp;lt;그림 15&amp;gt;를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제에서 다루는 2048 게임은 보드의 크기가 N&amp;times;N 이다. 보드의 크기와 보드판의 블록 상태가 주어졌을 때, 최대 5번 이동해서 만들 수 있는 가장 큰 블록의 값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 보드의 크기 N (1 &amp;le; N &amp;le; 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대 5번 이동시켜서 얻을 수 있는 가장 큰 블록을&amp;nbsp;출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RsfHF/btrX32mDQRf/aBgY3XyS6NgiWaKJxBQeuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RsfHF/btrX32mDQRf/aBgY3XyS6NgiWaKJxBQeuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RsfHF/btrX32mDQRf/aBgY3XyS6NgiWaKJxBQeuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRsfHF%2FbtrX32mDQRf%2FaBgY3XyS6NgiWaKJxBQeuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1269&quot; height=&quot;229&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675605710172&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int N = 0;
int map[20][20];
int result;

string dir[4] = { &quot;up&quot;, &quot;down&quot;, &quot;left&quot;, &quot;right&quot; };//방향

void move(int arr[][20], string type)//type에 따라 이동을 다른 방식으로 진행
{
	if (type == &quot;up&quot;)
	{
		for (int i = 0; i &amp;lt; N - 1; i++)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				bool Check = false;
				if (arr[i][j] == 0)//본인이 0(통로)일 경우
				{
					int k = i + 1;//k는 본인의 아래 칸
					while (k &amp;lt;= N - 1)//k가 범위 내에 있을 동안
					{
						if (arr[k][j] != 0)//본인의 아래인 k도 0(통로)가 아니면 check를 true로 하고 break
						{
							Check = true;
							break;
						}
						k++;//k도 0 이라면 1 증가해서 한칸 더 아래로
					}

					if (Check == true)//check가 true일 때 처음 0의 위치까지 arr[k][j]를 위로 올린다.
					{
						arr[i][j] = arr[k][j];
						arr[k][j] = 0;
					}
				}
			}
		}
	}
	if (type == &quot;down&quot;)
	{
		for (int i = N - 1; i &amp;gt; 0; i--)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				bool Check = false;
				if (arr[i][j] == 0)
				{
					int k = i - 1;
					while (k &amp;gt;= 0)
					{
						if (arr[k][j] != 0)
						{
							Check = true;
							break;
						}
						k--;
					}
					if (Check == true)
					{
						arr[i][j] = arr[k][j];
						arr[k][j] = 0;
					}
				}
			}
		}
	}
	if (type == &quot;left&quot;)
	{
		for (int i = 0; i &amp;lt; N; i++)
		{
			for (int j = 0; j &amp;lt; N - 1; j++)
			{
				bool Check = false;
				if (arr[i][j] == 0)
				{
					int k = j + 1;
					while (k &amp;lt;= N - 1)
					{
						if (arr[i][k] != 0)
						{
							Check = true;
							break;
						}
						k++;
					}
					if (Check == true)
					{
						arr[i][j] = arr[i][k];
						arr[i][k] = 0;
					}
				}
			}
		}
	}
	if (type == &quot;right&quot;)
	{
		for (int i = 0; i &amp;lt; N; i++)
		{
			for (int j = N - 1; j &amp;gt; 0; j--)
			{
				bool Check = false;
				if (arr[i][j] == 0)
				{
					int k = j - 1;
					while (k &amp;gt;= 0)
					{
						if (arr[i][k] != 0)
						{
							Check = true;
							break;
						}
						k--;
					}
					if (Check == true)
					{
						arr[i][j] = arr[i][k];
						arr[i][k] = 0;
					}
				}
			}
		}
	}

}

void sum(int arr[][20], string type)
{
	if (type == &quot;up&quot;)
	{
		for (int i = 1; i &amp;lt; N; i++)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				if (arr[i][j] == arr[i-1][j])//만약 본인과 한칸 위의 숫자가 같다면
				{
					arr[i-1][j] = arr[i-1][j] + arr[i][j];//자신을 한칸 위의 숫자에 더하고
					arr[i][j] = 0;//자신은 0으로
				}
			}
		}
	}
	if (type == &quot;down&quot;)
	{
		for (int i = N-2; i &amp;gt;= 0 ; i--)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				if (arr[i][j] == arr[i + 1][j])
				{
					arr[i + 1][j] = arr[i + 1][j] + arr[i][j];
					arr[i][j] = 0;
				}
			}
		}
	}
	if (type == &quot;left&quot;)
	{
		for (int i = 0; i &amp;lt; N; i++)
		{
			for (int j = 1; j &amp;lt; N; j++)
			{
				if (arr[i][j] == arr[i][j - 1])
				{
					arr[i][j - 1] = arr[i][j - 1] + arr[i][j];
					arr[i][j] = 0;
				}
			}
		}
	}
	if (type == &quot;right&quot;)
	{
		for (int i = 0; i &amp;lt; N; i++)
		{
			for (int j = N-2; j &amp;gt;= 0; j--)
			{
				if (arr[i][j] == arr[i][j + 1])
				{
					arr[i][j + 1] = arr[i][j + 1] + arr[i][j];
					arr[i][j] = 0;
				}
			}
		}
	}
}


void dfs(int count, int root[][20])
{
	//종료 시점
	if (count == 5)
	{
		for (int i = 0; i &amp;lt; N; i++)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				result = max(result, root[i][j]);//한 칸씩 돌며 최대값 갱신
			}
		}
		return;
	}

	for (int i = 0; i &amp;lt; 4; i++)
	{
		//부모 맵 지정(복사)
		int parentMap[20][20];
        //부모 맵 1개를 토대로 4가지 방향 이동 move를 시킬 것이기 때문에 미리 저장해둔다.
		for (int k = 0; k &amp;lt; N; k++)
		{
			for (int j = 0; j &amp;lt; N; j++)
			{
				parentMap[k][j] = root[k][j];
			}
		}
		//이동
		move(parentMap, dir[i]);
        //합치고
		sum(parentMap, dir[i]);
        //중간에 0이 있는 곳을 매꾸기 위해 다시 move
		move(parentMap, dir[i]);
		dfs(count + 1, parentMap);//count 1 증가시키고 이동 + 합치기 가 완료된 map이 새로운 루트맵으로 dfs진행
	}

}


int main()
{
	//입력
	cin &amp;gt;&amp;gt; N;
	for(int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; N; j++)
		{
			cin &amp;gt;&amp;gt; map[i][j];
		}
	}

	dfs(0, map);
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. dfs 재귀로 한 레벨에서 상하좌우 모든 경우의 수 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 트리에서 다음 레벨로 내려가기 전 root 노드를 모든 자식이 참조 할 수 있게끔 parentMap에 미리 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 상/하/좌/우 에 따라 이동방식, 합치기 방식 각기 다르게 구현&lt;/p&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>12100</category>
      <category>2048 (Easy)</category>
      <category>C++</category>
      <category>DFS</category>
      <category>깊이우선탐색</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/226</guid>
      <comments>https://mun-coding.tistory.com/226#entry226comment</comments>
      <pubDate>Sun, 5 Feb 2023 23:04:22 +0900</pubDate>
    </item>
    <item>
      <title>백준 13460 c++ 구슬 탈출 2</title>
      <link>https://mun-coding.tistory.com/225</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/13460&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/13460&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675433317109&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;13460번: 구슬 탈출 2&quot; data-og-description=&quot;첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 &amp;le; N, M &amp;le; 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B'&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/13460&quot; data-og-url=&quot;https://www.acmicpc.net/problem/13460&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cgZ5cr/hyRvpM7yyB/eTq0jrvbCpKaWKesExd190/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/13460&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/13460&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cgZ5cr/hyRvpM7yyB/eTq0jrvbCpKaWKesExd190/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;13460번: 구슬 탈출 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 &amp;le; N, M &amp;le; 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B'&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스타트링크에서 판매하는 어린이용 장난감 중에서 가장 인기가 많은 제품은 구슬 탈출이다. 구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣은 다음, 빨간 구슬을 구멍을 통해 빼내는 게임이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보드의 세로 크기는 N, 가로 크기는 M이고, 편의상 1&amp;times;1크기의 칸으로 나누어져 있다. 가장 바깥 행과 열은 모두 막혀져 있고, 보드에는 구멍이 하나 있다. 빨간 구슬과 파란 구슬의 크기는 보드에서 1&amp;times;1크기의 칸을 가득 채우는 사이즈이고, 각각 하나씩 들어가 있다. 게임의 목표는 빨간 구슬을 구멍을 통해서 빼내는 것이다. 이때, 파란 구슬이 구멍에 들어가면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 구슬을 손으로 건드릴 수는 없고, 중력을 이용해서 이리 저리 굴려야 한다. 왼쪽으로 기울이기, 오른쪽으로 기울이기, 위쪽으로 기울이기, 아래쪽으로 기울이기와 같은 네 가지 동작이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 동작에서 공은 동시에 움직인다. 빨간 구슬이 구멍에 빠지면 성공이지만, 파란 구슬이 구멍에 빠지면 실패이다.&amp;nbsp;빨간 구슬과 파란 구슬이 동시에 구멍에 빠져도 실패이다. 빨간 구슬과 파란 구슬은 동시에 같은 칸에 있을 수 없다. 또, 빨간 구슬과 파란 구슬의 크기는 한 칸을 모두 차지한다.&amp;nbsp;기울이는 동작을 그만하는 것은 더 이상 구슬이 움직이지 않을 때 까지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보드의 상태가 주어졌을 때, 최소 몇 번 만에 빨간 구슬을 구멍을 통해 빼낼 수 있는지 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 &amp;le; N, M &amp;le; 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로&amp;nbsp;이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력되는 모든 보드의 가장자리에는 모두 '#'이 있다. 구멍의 개수는 한 개 이며, 빨간 구슬과 파란 구슬은 항상 1개가 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최소 몇 번 만에 빨간 구슬을 구멍을 통해 빼낼 수 있는지 출력한다.&amp;nbsp;만약, 10번 이하로 움직여서 빨간 구슬을 구멍을 통해 빼낼 수 없으면 -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTtR8a/btrX3sY6ItU/tWwxon0hAeYwEZnjjU03j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTtR8a/btrX3sY6ItU/tWwxon0hAeYwEZnjjU03j0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTtR8a/btrX3sY6ItU/tWwxon0hAeYwEZnjjU03j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTtR8a%2FbtrX3sY6ItU%2FtWwxon0hAeYwEZnjjU03j0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1274&quot; height=&quot;632&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;1027&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xBr4L/btrX3skrrXF/kvNKA0ESsLGapAez3524uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xBr4L/btrX3skrrXF/kvNKA0ESsLGapAez3524uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xBr4L/btrX3skrrXF/kvNKA0ESsLGapAez3524uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxBr4L%2FbtrX3skrrXF%2FkvNKA0ESsLGapAez3524uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;1027&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;1027&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cznoyb/btrX2phvv5k/CvkJ9xQ8NHwSxKa0UwS2BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cznoyb/btrX2phvv5k/CvkJ9xQ8NHwSxKa0UwS2BK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cznoyb/btrX2phvv5k/CvkJ9xQ8NHwSxKa0UwS2BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcznoyb%2FbtrX2phvv5k%2FCvkJ9xQ8NHwSxKa0UwS2BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1271&quot; height=&quot;666&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675433384958&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,-1,1 };//상하좌우

int N, M;//행,열
char arr[10][10];
bool visitR[10][10];
bool visitB[10][10];

int redX = 0;
int redY = 0;
int blueX = 0;
int blueY = 0;

int result = -1;

void move(int&amp;amp; nowX, int&amp;amp; nowY, int dirX, int dirY, int&amp;amp; count)
{
	while (arr[nowX + dirX][nowY + dirY] != '#' &amp;amp;&amp;amp; arr[nowX][nowY] != 'O')//현재 위치가 O가 아니고, 다음 위치가 벽#이 아니라면
	{
		count += 1;
		nowX = nowX + dirX;
		nowY = nowY + dirY;
	}
}
//참조를 써서 인자를 리턴할까?


void bfs()
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; Rq;
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; Bq;
	queue&amp;lt;int&amp;gt; countQ;
	//먼저 각 현재 위치를 큐에 넣고
	Rq.push(make_pair(redX, redY));
	Bq.push(make_pair(blueX, blueY));
	countQ.push(0);

	while (!Rq.empty())
	{
		int redNx = Rq.front().first;
		int redNy = Rq.front().second;
		int blueNx = Bq.front().first;
		int blueNy = Bq.front().second;

		int count = countQ.front();

		Rq.pop();
		Bq.pop();
		countQ.pop();

		if (count &amp;gt;= 10)
		{
			result = -1;
			break;
		}
		for (int i = 0; i &amp;lt; 4; i++)
		{
			int rX = redNx;
			int rY = redNy;
			int bX = blueNx;
			int bY = blueNy;
			 
			int ncount = count + 1;

			int redCnt = 0;
			int blueCnt = 0;
			move(rX, rY, dx[i], dy[i], redCnt);
			move(bX, bY, dx[i], dy[i], blueCnt);

			if (arr[bX][bY] == 'O')//case 1 파랑구슬이 구멍으로 갔다면 스킵
			{
				continue;
			}
			if (arr[rX][rY] == 'O')//case 2 빨간구슬만 구멍으로 갔다면 답을 찾았으므로 리턴
			{
				result = ncount;
				return;
			}
			if (rX == bX &amp;amp;&amp;amp; rY == bY)//case 3 빨간구슬과 파란구슬 위치가 같다면
			{
				if (redCnt &amp;gt; blueCnt)//빨간구슬이 더 많이 이동했다는건 파랑구슬보다 더 뒤에 있었다는거
				{
					rX -= dx[i];
					rY -= dy[i];
				}
				else
				{
					bX -= dx[i];
					bY -= dy[i];
				}
			}
			Rq.push(make_pair(rX, rY));
			Bq.push(make_pair(bX, bY));
			countQ.push(ncount);
		}
	}
	result = -1;
}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;

	for (int i = 0; i &amp;lt; N; i++)
	{
		for (int j = 0; j &amp;lt; M; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];
			if (arr[i][j] == 'R')
			{
				redX = i;
				redY = j;
			}
			if (arr[i][j] == 'B')
			{
				blueX = i;
				blueY = j;
			}
		}
	}
	bfs();
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>BFS</category>
      <category>C++</category>
      <category>구슬 탈출 2</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/225</guid>
      <comments>https://mun-coding.tistory.com/225#entry225comment</comments>
      <pubDate>Fri, 3 Feb 2023 23:10:18 +0900</pubDate>
    </item>
    <item>
      <title>백준 1062 c++ 가르침</title>
      <link>https://mun-coding.tistory.com/224</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1062&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1062&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675313011944&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1062번: 가르침&quot; data-og-description=&quot;첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1062&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1062&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1062&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1062&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1062번: 가르침&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;남극에 사는 김지민 선생님은 학생들이 되도록이면 많은 단어를 읽을 수 있도록 하려고 한다.&amp;nbsp;&lt;span&gt;그러나 지구온난화로 인해 얼음이 녹아서 곧 학교가 무너지기 때문에, 김지민은 K개의 글자를 가르칠 시간 밖에 없다. 김지민이 가르치고 난 후에는, 학생들은 그 K개의 글자로만 이루어진 단어만을 읽을 수 있다. 김지민은 어떤 K개의 글자를 가르쳐야 학생들이 읽을 수 있는 단어의 개수가 최대가 되는지 고민에 빠졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;남극언어의 모든 단어는 &quot;anta&quot;로 시작되고, &quot;tica&quot;로 끝난다. 남극언어에 단어는 N개 밖에 없다고 가정한다. 학생들이 읽을 수 있는 단어의 최댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문자로만 이루어져 있고, 길이가 8보다 크거나 같고, 15보다 작거나 같다. 모든 단어는 중복되지 않는다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 김지민이 K개의 글자를 가르칠 때, 학생들이 읽을 수 있는 단어 개수의 최댓값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTmx02/btrXOVuuisV/JHFVIO4lQN9Ki4HKZRdXJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTmx02/btrXOVuuisV/JHFVIO4lQN9Ki4HKZRdXJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTmx02/btrXOVuuisV/JHFVIO4lQN9Ki4HKZRdXJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTmx02%2FbtrXOVuuisV%2FJHFVIO4lQN9Ki4HKZRdXJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1444&quot; height=&quot;497&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1439&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XFPhv/btrXVhQbMDH/tyk5scrrnYs1FurSqEJ2xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XFPhv/btrXVhQbMDH/tyk5scrrnYs1FurSqEJ2xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XFPhv/btrXVhQbMDH/tyk5scrrnYs1FurSqEJ2xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXFPhv%2FbtrXVhQbMDH%2Ftyk5scrrnYs1FurSqEJ2xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1439&quot; height=&quot;451&quot; data-origin-width=&quot;1439&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675313112422&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
using namespace std;
bool alpha[26];
int N, K;
string arr[50];
int result = 0;

bool check(int index)//체크된 알파벳으로 몇 개 단어를 다 돌 수 있는지 확인 
{
	for (int i = 4; i &amp;lt; arr[index].size()-4; i++)//앞 뒤 4글자씩은 고정이므로 탐색x
	{
		if (!alpha[arr[index][i] - 'a'])//체크안된 알파벳이면 false 체크면 true
			return false;
	}
	return true;
}

void dfs(int count, int start)
{
	if (count == K - 5)//알파벳 선택이 끝나면 몇개를 만족하는지 확인 시작
	{
		int sum = 0;
		for (int i = 0; i &amp;lt; N; i++)
		{
			if (check(i))
			{
				sum++;
			}
		}
		result = max(result, sum);//만족한 단어 개수 갱신
		return;
	}

	for (int i = start; i &amp;lt; 26; i++)
	{
		if (alpha[i])//이미 체크 돼있으면
			continue;
		alpha[i] = true;
		dfs(count + 1, i);
		alpha[i] = false;
	}
	return;
}

int main()
{
	//필수 알파벳 5개 a,n,t,c,i
	alpha['a' - 'a'] = true;
	alpha['n' - 'a'] = true;
	alpha['t' - 'a'] = true;
	alpha['c' - 'a'] = true;
	alpha['i' - 'a'] = true;

	//입력
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; K;
	for (int i = 0; i &amp;lt; N; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
	}
	if (K &amp;lt; 5)
		cout &amp;lt;&amp;lt; 0;
	else
	{
		dfs(0, 0);
		cout &amp;lt;&amp;lt; result;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>1062</category>
      <category>C++</category>
      <category>DFS</category>
      <category>가르침</category>
      <category>깊이우선탐색</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>브루트포스</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/224</guid>
      <comments>https://mun-coding.tistory.com/224#entry224comment</comments>
      <pubDate>Thu, 2 Feb 2023 13:45:44 +0900</pubDate>
    </item>
    <item>
      <title>엘리듬(3일차) - 메인메뉴, 스테이지 클리어</title>
      <link>https://mun-coding.tistory.com/223</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;메인메뉴&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQEGFw/btrXJVhslby/nM6CM6RVJzUZbHBTUi2D1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQEGFw/btrXJVhslby/nM6CM6RVJzUZbHBTUi2D1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQEGFw/btrXJVhslby/nM6CM6RVJzUZbHBTUi2D1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQEGFw%2FbtrXJVhslby%2FnM6CM6RVJzUZbHBTUi2D1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;627&quot; height=&quot;264&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1499&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbf2Al/btrXJ211rgJ/EAupgzQQ9FXemouein3yYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbf2Al/btrXJ211rgJ/EAupgzQQ9FXemouein3yYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbf2Al/btrXJ211rgJ/EAupgzQQ9FXemouein3yYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdbf2Al%2FbtrXJ211rgJ%2FEAupgzQQ9FXemouein3yYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1499&quot; height=&quot;518&quot; data-origin-width=&quot;1499&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 UI작업을 먼저 해주었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rLfRj/btrXQhJyNM3/ONZ7I1ju4TQtEOJt9AkhL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rLfRj/btrXQhJyNM3/ONZ7I1ju4TQtEOJt9AkhL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rLfRj/btrXQhJyNM3/ONZ7I1ju4TQtEOJt9AkhL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrLfRj%2FbtrXQhJyNM3%2FONZ7I1ju4TQtEOJt9AkhL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;266&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 오브젝트 GameManagerLobby 를 만들고 새로운 스크립트 LobbyGameManager를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYDELT/btrXPx0bhnX/a15kxgBQyf8veirdBjnawK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYDELT/btrXPx0bhnX/a15kxgBQyf8veirdBjnawK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYDELT/btrXPx0bhnX/a15kxgBQyf8veirdBjnawK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYDELT%2FbtrXPx0bhnX%2Fa15kxgBQyf8veirdBjnawK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;596&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드는 다음과 같이 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;checkRuben bool형 변수를 활용하여 panel의 키고 끄는 것을 제어한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc38nr/btrXOt44bYb/5IiBzKyZAtGfITkVEMo9jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc38nr/btrXOt44bYb/5IiBzKyZAtGfITkVEMo9jK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc38nr/btrXOt44bYb/5IiBzKyZAtGfITkVEMo9jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc38nr%2FbtrXOt44bYb%2F5IiBzKyZAtGfITkVEMo9jK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;180&quot; height=&quot;151&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cANMyp/btrXOVfXDYt/5TZJ9om7P0uhCJA9JA19SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cANMyp/btrXOVfXDYt/5TZJ9om7P0uhCJA9JA19SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cANMyp/btrXOVfXDYt/5TZJ9om7P0uhCJA9JA19SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcANMyp%2FbtrXOVfXDYt%2F5TZJ9om7P0uhCJA9JA19SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;609&quot; height=&quot;445&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성해둔 버튼에 새로운 스크립트 LevelSelection을 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nNkKI/btrXOiCJwF7/FhkR31Aw6prb1tZqzYkyik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nNkKI/btrXOiCJwF7/FhkR31Aw6prb1tZqzYkyik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nNkKI/btrXOiCJwF7/FhkR31Aw6prb1tZqzYkyik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnNkKI%2FbtrXOiCJwF7%2FFhkR31Aw6prb1tZqzYkyik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;811&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;811&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드는 다음과 같다 bool형 변수 unlocked를 통해 image의 A값을 제어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 버튼을 눌렀을 시 씬을 불러오는 함수를 작성하고 인자로는 이동할 맵 이름을 문자열로 입력받도록 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAuEfl/btrXN45R1R9/IrkoXqaJ636BYyBD1zKDAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAuEfl/btrXN45R1R9/IrkoXqaJ636BYyBD1zKDAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAuEfl/btrXN45R1R9/IrkoXqaJ636BYyBD1zKDAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAuEfl%2FbtrXN45R1R9%2FIrkoXqaJ636BYyBD1zKDAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;28&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;28&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyuzO/btrXQYbUQPW/SKdo73IJttvDh1C3fcSpUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyuzO/btrXQYbUQPW/SKdo73IJttvDh1C3fcSpUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyuzO/btrXQYbUQPW/SKdo73IJttvDh1C3fcSpUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlyuzO%2FbtrXQYbUQPW%2FSKdo73IJttvDh1C3fcSpUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;683&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 오브젝트 &amp;amp; 스크립트인 MainManager를 생성한다. 해당 오브젝트는 플레이어의 현재 클리어한 stage를 저장할 것 이므로 모든 맵에 이 오브젝트가 들어있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nowStage는 클리어한 스테이지를 저장하며 stages배열에는 맵의 버튼 오브젝트들을 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 GameClear()함수를 통해 해당 맵에서 게임을 클리어 하면 nowStage를 1 증가시켜 저장하는 함수를 간단하게 작성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Load같은 경우는 Update함수안에 넣어 지속적으로 불러올 수 있도록 하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AxT9S/btrXPUAWMFk/lXtLmqk3v5KVN86jJWG5E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AxT9S/btrXPUAWMFk/lXtLmqk3v5KVN86jJWG5E1/img.png&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;406&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.5181%; margin-right: 10px;&quot; data-widthpercent=&quot;51.11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AxT9S/btrXPUAWMFk/lXtLmqk3v5KVN86jJWG5E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAxT9S%2FbtrXPUAWMFk%2FlXtLmqk3v5KVN86jJWG5E1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;857&quot; height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d29aSw/btrXOuXjEIq/ff1DJb0sBvDKkAQUrQ0pRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d29aSw/btrXOuXjEIq/ff1DJb0sBvDKkAQUrQ0pRK/img.png&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;422&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.3191%;&quot; data-widthpercent=&quot;48.89&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d29aSw/btrXOuXjEIq/ff1DJb0sBvDKkAQUrQ0pRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd29aSw%2FbtrXOuXjEIq%2Fff1DJb0sBvDKkAQUrQ0pRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;852&quot; height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 게임화면에 clear버튼을 생성하고 MainManager 스크립트의 GameClear함수를 실행하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1499&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XvtBe/btrXOQ6U9Og/4nSqvruiPsKGjAP4K7g30K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XvtBe/btrXOQ6U9Og/4nSqvruiPsKGjAP4K7g30K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XvtBe/btrXOQ6U9Og/4nSqvruiPsKGjAP4K7g30K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXvtBe%2FbtrXOQ6U9Og%2F4nSqvruiPsKGjAP4K7g30K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1499&quot; height=&quot;672&quot; data-origin-width=&quot;1499&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NowStage변수가 0 -&amp;gt; 1로 증가하였고 스테이지 이미지도 불이 들어온 모습이다.&lt;/p&gt;</description>
      <category>유니티/토이프로젝트 - 엘리듬</category>
      <category>개인 개발</category>
      <category>엘리듬</category>
      <category>유니티</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/223</guid>
      <comments>https://mun-coding.tistory.com/223#entry223comment</comments>
      <pubDate>Wed, 1 Feb 2023 20:10:42 +0900</pubDate>
    </item>
    <item>
      <title>백준 1987 c++ 알파벳</title>
      <link>https://mun-coding.tistory.com/222</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1987&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1987&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675218359411&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1987번: 알파벳&quot; data-og-description=&quot;세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1987&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1987&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e205A/hyRspniTIQ/UcIn6njaG5nR7bkrhLoe50/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1987&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1987&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e205A/hyRspniTIQ/UcIn6njaG5nR7bkrhLoe50/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1987번: 알파벳&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1 &amp;le; R,C &amp;le; 20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있는 C개의 대문자 알파벳들이 빈칸 없이 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 말이 지날 수 있는 최대의 칸 수를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctdkcn/btrXM4pMQYf/lb7pIlSAx6zKI5xiSI2cM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctdkcn/btrXM4pMQYf/lb7pIlSAx6zKI5xiSI2cM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctdkcn/btrXM4pMQYf/lb7pIlSAx6zKI5xiSI2cM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctdkcn%2FbtrXM4pMQYf%2Flb7pIlSAx6zKI5xiSI2cM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1447&quot; height=&quot;852&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675218480199&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
using namespace std;

int R, C;//행, 열
string arr[20];//입력받은 문자열
bool alpha[26];//알파벳 A~Z 체크
int result;

int dx[4] = {0,0,-1,1};//상하좌우
int dy[4] = {1,-1,0,0};


void dfs(int count, int row, int col)//인자는 이동횟수, 행, 열
{
	result = max(count, result);//함수 실행마다 최대값 갱신
	alpha[arr[row][col] - 'A'] = true;//현재 위치의 알파벳 true체크

	

	for (int i = 0; i &amp;lt; 4; i++)
	{
		int nextX = row + dx[i];
		int nextY = col + dy[i];
		if ((nextX &amp;gt;=0&amp;amp;&amp;amp;nextX&amp;lt;R)&amp;amp;&amp;amp;(nextY&amp;gt;=0&amp;amp;&amp;amp;nextY&amp;lt;C))//범위 안에 있을 때
		{
			if (alpha[arr[nextX][nextY] - 'A'] == true)//이미 지나간 알파벳이면 스킵
				continue;
			else
			{
				dfs(count + 1, nextX, nextY);

			}
		}
	}
	alpha[arr[row][col] - 'A'] = false;//해당 칸에서 함수 종료시 false로 전환
	return;
}

int main()
{
	cin &amp;gt;&amp;gt; R &amp;gt;&amp;gt; C;
	for (int i = 0; i &amp;lt; R; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
	}

	dfs(1, 0, 0);
	cout &amp;lt;&amp;lt; result;

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>1987</category>
      <category>C++</category>
      <category>DFS</category>
      <category>깊이우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>알파벳</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/222</guid>
      <comments>https://mun-coding.tistory.com/222#entry222comment</comments>
      <pubDate>Wed, 1 Feb 2023 11:28:22 +0900</pubDate>
    </item>
    <item>
      <title>백준 4574 c++ 스도미노쿠</title>
      <link>https://mun-coding.tistory.com/221</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4574&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/4574&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675174189778&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;4574번: 스도미노쿠&quot; data-og-description=&quot;입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 채워져 있는 도미노의 개수 N이 주어진다. (10 &amp;le; N &amp;le; 35) 다음 N개 줄에는 도미노 하나를 나타내는 U LU V LV가 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/4574&quot; data-og-url=&quot;https://www.acmicpc.net/problem/4574&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c5G8ac/hyRsvtZmfw/15n9kGsqbgriYKTxuJorkK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4574&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/4574&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c5G8ac/hyRsvtZmfw/15n9kGsqbgriYKTxuJorkK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;4574번: 스도미노쿠&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 채워져 있는 도미노의 개수 N이 주어진다. (10 &amp;le; N &amp;le; 35) 다음 N개 줄에는 도미노 하나를 나타내는 U LU V LV가&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스도쿠가 세계적으로 유행이 된 이후에, 비슷한 퍼즐이 매우 많이 나왔다. 게임 매거진 2009년 7월호에는 스도쿠와 도미노를 혼합한 게임인 스도미노쿠가 소개되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 퍼즐은 스도쿠 규칙을 따른다. 스도쿠는 9&amp;times;9 크기의 그리드를 1부터 9까지 숫자를 이용해서 채워야 한다. 스도쿠는 다음과 같은 조건을 만족하게 숫자를 채워야 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 행에는 1부터 9까지 숫자가 하나씩 있어야 한다.&lt;/li&gt;
&lt;li&gt;각 열에는 1부터 9까지 숫자가 하나씩 있어야 한다.&lt;/li&gt;
&lt;li&gt;3&amp;times;3크기의 정사각형에는 1부터 9가지 숫자가 하나씩 있어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스도미노쿠의 그리드에는 1부터 9까지 숫자가 쓰여져 있고, 나머지 72칸은 도미노 타일 36개로 채워야 한다. 도미노 타일은 1부터 9까지 서로 다른 숫자의 가능한 쌍이 모두 포함되어 있다. (1+2, 1+3, 1+4, 1+5, 1+6, 1+7, 1+8, 1+9, 2+3, 2+4, 2+5, ...) 1+2와 2+1은 같은 타일이기 때문에, 따로 구분하지 않는다. 도미노 타일은 회전 시킬 수 있다. 또, 3&amp;times;3 크기의 정사각형의 경계에 걸쳐서 놓여질 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 그림은 퍼즐의 초기 상태를 나타내고, 오른쪽은 퍼즐을 푼 상태이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwaVFx/btrXK8yYZ2D/5uZoS401aip0gKVWXQrk0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwaVFx/btrXK8yYZ2D/5uZoS401aip0gKVWXQrk0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwaVFx/btrXK8yYZ2D/5uZoS401aip0gKVWXQrk0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwaVFx%2FbtrXK8yYZ2D%2F5uZoS401aip0gKVWXQrk0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;339&quot; height=&quot;339&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAKIPy/btrXGocMAik/NFbszaHGGWOL1ttzaXAxVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAKIPy/btrXGocMAik/NFbszaHGGWOL1ttzaXAxVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAKIPy/btrXGocMAik/NFbszaHGGWOL1ttzaXAxVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAKIPy%2FbtrXGocMAik%2FNFbszaHGGWOL1ttzaXAxVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;352&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;스도미노쿠의 퍼즐의 초기 상태가 주어졌을 때, 퍼즐을 푸는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 채워져 있는 도미노의 개수 N이 주어진다. (10 &amp;le; N &amp;le; 35) 다음 N개 줄에는 도미노 하나를 나타내는 U LU V LV가 주어진다. U는 도미노에 쓰여 있는 한 숫자이고, LU는 길이가 2인 문자열로 U의 위치를 나타낸다. V와 LV는 도미노에 쓰여 있는 다른 숫자를 나타낸다. 도미노의 위치는 문제에 나와있는 그림을 참고한다. 입력으로 주어지는 도미노의 각 숫자 위치는 항상 인접해 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 도미노의 정보가 주어진 다음 줄에는 채워져 있는 숫자의 위치가 1부터 9까지 차례대로 주어진다. 위치는 도미노의 위치를 나타낸 방법과 같은 방법으로 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 도미노와 숫자가 겹치는 경우는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력의 마지막 줄에는 0이 하나 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 퍼즐에 대해서, 스도쿠를 푼 결과를 출력한다. 항상 답이 유일한 경우만 입력으로 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DwdG0/btrXJ1UmKQK/FTGOGOVRo3bBOVnD7rCMk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DwdG0/btrXJ1UmKQK/FTGOGOVRo3bBOVnD7rCMk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DwdG0/btrXJ1UmKQK/FTGOGOVRo3bBOVnD7rCMk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDwdG0%2FbtrXJ1UmKQK%2FFTGOGOVRo3bBOVnD7rCMk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;853&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1675174312191&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;cstring&amp;gt; //memset
using namespace std;


int arr[9][9];
bool row[9][10];//row[a][b] == true : a열에 b가 있다.
bool col[9][10];
bool miniArr[3][3][10]; //miniArr[a][b][c] == true : c가 [a,b] 3x3 타일안에 있다.
bool tile[10][10];//tile[a][b] == ture : a와 b가 세트인 타일이 있다.

bool fin;
int puzzle = 1;

void reset()
{
	fin = false;
	memset(arr, 0, sizeof(arr));
	memset(row, false, sizeof(row));
	memset(col, false, sizeof(col));
	memset(miniArr, false, sizeof(miniArr));
	memset(tile, false, sizeof(tile));
}

bool checkRow(int posX,int posY, int num1, int num2)//&amp;lt;가로&amp;gt;(posX,posY)에 num1, (posX, posY+1)에 num2를 넣어도 될까?
{
	if (row[posX][num1] == true || row[posX][num2]==true)
		return false;
	if (col[posY][num1] == true || col[posY + 1][num2] == true)
		return false;
	if (miniArr[posX / 3][posY / 3][num1] == true || miniArr[posX / 3][(posY + 1) / 3][num2] == true)
		return false;
	return true;

}

bool checkCol(int posX, int posY, int num1, int num2)//&amp;lt;세로&amp;gt;(posX,posY)에 num1, (posX+1, posY)에 num2를 넣어도 될까?
{
	if (row[posX][num1] == true || row[posX+1][num2] == true)
		return false;
	if (col[posY][num1] == true || col[posY][num2] == true)
		return false;
	if (miniArr[posX / 3][posY / 3][num1] == true || miniArr[(posX + 1) / 3][posY / 3][num2] == true)
		return false;
	return true;
}

void WriteRow(int posX, int posY, int num1, int num2, bool state)
{
	if (state == true)
	{
		arr[posX][posY] = num1;
		arr[posX][posY + 1] = num2;

		row[posX][num1] = true;
		row[posX][num2] = true;

		col[posY][num1] = true;
		col[posY + 1][num2] = true;

		miniArr[posX / 3][posY / 3][num1] = true;
		miniArr[posX / 3][(posY + 1) / 3][num2] = true;

		tile[num1][num2] = true;
		tile[num2][num1] = true;
	}
	else if (state == false)
	{
		arr[posX][posY] = 0;
		arr[posX][posY + 1] = 0;

		row[posX][num1] = false;
		row[posX][num2] = false;

		col[posY][num1] = false;
		col[posY + 1][num2] = false;

		miniArr[posX / 3][posY / 3][num1] = false;
		miniArr[posX / 3][(posY + 1) / 3][num2] = false;

		tile[num1][num2] = false;
		tile[num2][num1] = false;
	}
}

void WriteCol(int posX, int posY, int num1, int num2, bool state)
{
	if (state == true)
	{
		arr[posX][posY] = num1;
		arr[posX + 1][posY] = num2;

		row[posX][num1] = true;
		row[posX + 1][num2] = true;

		col[posY][num1] = true;
		col[posY][num2] = true;

		miniArr[posX / 3][posY / 3][num1] = true;
		miniArr[(posX + 1) / 3][posY / 3][num2] = true;

		tile[num1][num2] = true;
		tile[num2][num1] = true;
	}
	else if (state == false)
	{
		arr[posX][posY] = 0;
		arr[posX + 1][posY] = 0;

		row[posX][num1] = false;
		row[posX + 1][num2] = false;

		col[posY][num1] = false;
		col[posY][num2] = false;

		miniArr[posX / 3][posY / 3][num1] = false;
		miniArr[(posX + 1) / 3][posY / 3][num2] = false;

		tile[num1][num2] = false;
		tile[num2][num1] = false;
	}
}

void dfs(int count)
{
	if (fin)
		return;
	if (count == 81)
	{
		cout &amp;lt;&amp;lt; &quot;Puzzle &quot; &amp;lt;&amp;lt; puzzle&amp;lt;&amp;lt;'\n';
		for (int i = 0; i &amp;lt; 9; i++)
		{
			for (int j = 0; j &amp;lt; 9; j++)
			{
				cout &amp;lt;&amp;lt; arr[i][j];
			}
			cout &amp;lt;&amp;lt; '\n';
		}
		fin = true;
		puzzle++;
		return;
	}

	int x = count / 9;
	int y = count % 9;

	if (arr[x][y] != 0)//이미 차있으면 다음으로
		dfs(count + 1);
	else
	{
		//가로 판별
		if (y &amp;lt;= 7 &amp;amp;&amp;amp; arr[x][y+1] == 0)
		{
			for (int i = 1; i &amp;lt;= 9; i++)
			{
				for (int j = i + 1; j &amp;lt;= 9; j++)
				{
					if (tile[i][j] == false)
					{
						if (checkRow(x, y, i, j))//가로 만족 시
						{
							WriteRow(x, y, i, j, true);
							dfs(count + 1);
							WriteRow(x, y, i, j, false);
						}
						if (checkRow(x, y, j, i))
						{
							WriteRow(x, y, j, i, true);
							dfs(count + 1);
							WriteRow(x, y, j, i, false);
						}
					}
				}
			}
		}

		//세로 판별 바꿔야됨
		if (x &amp;lt;= 7 &amp;amp;&amp;amp; arr[x+1][y] == 0)
		{
			for (int i = 1; i &amp;lt;= 9; i++)
			{
				for (int j = i+1; j &amp;lt;= 9; j++)
				{
					if (tile[i][j] == false)
					{
						if (checkCol(x, y, i, j))//세로 만족 시
						{
							WriteCol(x, y, i, j, true);
							dfs(count + 1);
							WriteCol(x, y, i, j, false);
						}
						if (checkCol(x, y, j, i))
						{
							WriteCol(x, y, j, i, true);
							dfs(count + 1);
							WriteCol(x, y, j, i, false);
						}
					}
				}
			}
		}

	}
}


int main()
{
	//입력
	while (1)
	{
		int N;
		cin &amp;gt;&amp;gt; N;
		if (N == 0)
			break;
		
		for (int i = 0; i &amp;lt; N; i++)
		{
			int num1, num2;
			string pos1, pos2;
			cin &amp;gt;&amp;gt; num1 &amp;gt;&amp;gt; pos1 &amp;gt;&amp;gt; num2 &amp;gt;&amp;gt; pos2;
			int x = pos1[0] - 'A';
			int y = pos1[1] - '0' - 1;
			int x2 = pos2[0] - 'A';
			int y2 = pos2[1] - '0' - 1;

			arr[x][y] = num1;
			arr[x2][y2] = num2;

			//같은 행
			row[x][num1] = true;
			row[x2][num2] = true;
			//같은 열
			col[y][num1] = true;
			col[y2][num2] = true;
			//같은 3x3 칸
			miniArr[x/3][y/3][num1] = true;
			miniArr[x2/3][y2/3][num2] = true;
			//해당 타일 존재 여부
			tile[num1][num2] = true;
			tile[num2][num1] = true;
		}
		for (int i = 1; i &amp;lt;= 9; i++)
		{
			string pos;
			cin &amp;gt;&amp;gt; pos;
			int x = pos[0] - 'A';
			int y = pos[1] - '0' - 1;
			arr[x][y] = i;
			row[x][i] = true;
			col[y][i] = true;
			miniArr[x/3][y/3][i] = true;
		}

		dfs(0);
		reset();
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>4574</category>
      <category>C++</category>
      <category>DFS</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>스도미노쿠</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/221</guid>
      <comments>https://mun-coding.tistory.com/221#entry221comment</comments>
      <pubDate>Tue, 31 Jan 2023 23:12:34 +0900</pubDate>
    </item>
    <item>
      <title>백준 2580 c++ 스도쿠</title>
      <link>https://mun-coding.tistory.com/220</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2580&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2580&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674978030200&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2580번: 스도쿠&quot; data-og-description=&quot;스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2580&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2580&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dAsp5C/hyRq2rhcug/pHKXRJDAVoGO5lYDrgrGSk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/c872LN/hyRq9DWJG7/9Kvtbn6imBOklkkiqQx0Vk/img.png?width=480&amp;amp;height=460&amp;amp;face=0_0_480_460,https://scrap.kakaocdn.net/dn/icSXt/hyRqWYUKDz/UZkoVOehHb3M9VhAay7Ku0/img.png?width=480&amp;amp;height=460&amp;amp;face=0_0_480_460&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2580&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2580&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dAsp5C/hyRq2rhcug/pHKXRJDAVoGO5lYDrgrGSk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/c872LN/hyRq9DWJG7/9Kvtbn6imBOklkkiqQx0Vk/img.png?width=480&amp;amp;height=460&amp;amp;face=0_0_480_460,https://scrap.kakaocdn.net/dn/icSXt/hyRqWYUKDz/UZkoVOehHb3M9VhAay7Ku0/img.png?width=480&amp;amp;height=460&amp;amp;face=0_0_480_460');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2580번: 스도쿠&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Hjca/btrXo4q9Psp/EoUzlft3ku30KIEruLRQhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Hjca/btrXo4q9Psp/EoUzlft3ku30KIEruLRQhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Hjca/btrXo4q9Psp/EoUzlft3ku30KIEruLRQhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Hjca%2FbtrXo4q9Psp%2FEoUzlft3ku30KIEruLRQhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;270&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 빈 칸을 채우는 방식은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다.&lt;/li&gt;
&lt;li&gt;굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 빈칸에는 1이 들어가야 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vt2fG/btrXrTWXPF0/qSwe6YVsx9lj03aV6cH64K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vt2fG/btrXrTWXPF0/qSwe6YVsx9lj03aV6cH64K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vt2fG/btrXrTWXPF0/qSwe6YVsx9lj03aV6cH64K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVt2fG%2FbtrXrTWXPF0%2FqSwe6YVsx9lj03aV6cH64K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;478&quot; height=&quot;64&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;또한 위쪽 가운데 위치한 3x3 정사각형의 경우에는 3을 제외한 나머지 숫자들이 이미 쓰여있으므로 가운데 빈 칸에는 3이 들어가야 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;172&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRZak6/btrXqrM7n06/XKDyGdaP0J806epBc6t8F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRZak6/btrXqrM7n06/XKDyGdaP0J806epBc6t8F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRZak6/btrXqrM7n06/XKDyGdaP0J806epBc6t8F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRZak6%2FbtrXqrM7n06%2FXKDyGdaP0J806epBc6t8F1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;172&quot; height=&quot;164&quot; data-origin-width=&quot;172&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같이 빈 칸을 차례로 채워 가면 다음과 같은 최종 결과를 얻을 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N3NYw/btrXm6RdhTq/VKQ6WRo4z5Hk74JsDb6qhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N3NYw/btrXm6RdhTq/VKQ6WRo4z5Hk74JsDb6qhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N3NYw/btrXm6RdhTq/VKQ6WRo4z5Hk74JsDb6qhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN3NYw%2FbtrXm6RdhTq%2FVKQ6WRo4z5Hk74JsDb6qhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;315&quot; height=&quot;302&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;게임 시작 전 스도쿠 판에 쓰여 있는 숫자들의 정보가 주어질 때 모든 빈 칸이 채워진 최종 모습을 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아홉 줄에 걸쳐 한 줄에 9개씩 게임 시작 전 스도쿠판 각 줄에 쓰여 있는 숫자가 한 칸씩 띄워서 차례로 주어진다. 스도쿠 판의 빈 칸의 경우에는 0이 주어진다. 스도쿠 판을 규칙대로 채울 수 없는 경우의 입력은 주어지지 않는다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 빈 칸이 채워진 스도쿠 판의 최종 모습을 아홉 줄에 걸쳐 한 줄에 9개씩 한 칸씩 띄워서 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스도쿠 판을 채우는 방법이 여럿인 경우는 그 중 하나만을 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddczpQ/btrXtRR6Glh/AdXcUUNdPR3hCBaq5OZUyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddczpQ/btrXtRR6Glh/AdXcUUNdPR3hCBaq5OZUyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddczpQ/btrXtRR6Glh/AdXcUUNdPR3hCBaq5OZUyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddczpQ%2FbtrXtRR6Glh%2FAdXcUUNdPR3hCBaq5OZUyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1276&quot; height=&quot;380&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674978081810&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int arr[9][9];
vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; zeroPosition;//0의 위치

int countZero = 0;//0의 개수

bool finish = false;//정답 case가 2가지 이상 출력되는거 방지


bool check(int row, int col)//넣어볼까 하는거
{
	//숫자가 같은 칸이 있다면 false출력

	//가로 탐색
	for (int i = 0; i &amp;lt; 9; i++)
	{
		if (arr[row][i] == arr[row][col] &amp;amp;&amp;amp; i != col)
			return false;
	}
	//세로 탐색
	for (int i = 0; i &amp;lt; 9; i++)
	{
		if (arr[i][col] == arr[row][col] &amp;amp;&amp;amp; i != row)
			return false;
	}

	//3x3 탐색
	int miniRow = row / 3;
	int miniCol = col / 3;

	for (int i = 3 * miniRow; i &amp;lt; 3 * miniRow + 3; i++)
	{
		for (int j = 3 * miniCol; j &amp;lt; 3 * miniCol + 3; j++)
		{
			if (arr[i][j] == arr[row][col] &amp;amp;&amp;amp; (row != i &amp;amp;&amp;amp; row != j))
				return false;
		}
	}
	return true;
}

void dfs(int count)
{
	if (count == countZero)//0을 다 채웠다면 출력
	{
		for (int i = 0; i &amp;lt; 9; i++)
		{
			for (int j = 0; j &amp;lt; 9; j ++ )
			{
				cout &amp;lt;&amp;lt; arr[i][j]&amp;lt;&amp;lt;' ';
			}
			cout &amp;lt;&amp;lt; '\n';
		}
		finish = true;
		return;
	}

	int x = zeroPosition[count].first;
	int y = zeroPosition[count].second;
	//0의 위치에 1~9 숫자를 넣어보고 check함수로 결정
	for (int i = 1; i &amp;lt;= 9; i++)
	{
		arr[x][y] = i;
		if (check(x, y))
			dfs(count + 1);
		if (finish)
			return;
	}
	arr[x][y] = 0;//알맞은 값 못찾았을 경우 다시 0으로
	//해당 dfs에서 값을 못찾았으면 백트래킹을 통해 다른 값을 찾아야 하므로 0으로 돌려놈
	return;
}


int main()
{
	//입력
	for (int i = 0; i &amp;lt; 9; i++)
	{
		for (int j = 0; j &amp;lt; 9; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];

			if (arr[i][j] == 0)
			{
				zeroPosition.push_back(make_pair(i, j));
				countZero++;
			}
		}
	}

	dfs(0);

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2580</category>
      <category>C++</category>
      <category>DFS</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>스도쿠</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/220</guid>
      <comments>https://mun-coding.tistory.com/220#entry220comment</comments>
      <pubDate>Sun, 29 Jan 2023 16:41:46 +0900</pubDate>
    </item>
    <item>
      <title>엘리듬(2일차) - 장애물 피격, 일시정지, 재시작, 체력바 UI</title>
      <link>https://mun-coding.tistory.com/219</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1.플레이어 피격&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z6vHJ/btrXmKf6aFB/sU4ij3afuIKWLCjIqNCet1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z6vHJ/btrXmKf6aFB/sU4ij3afuIKWLCjIqNCet1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z6vHJ/btrXmKf6aFB/sU4ij3afuIKWLCjIqNCet1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6vHJ%2FbtrXmKf6aFB%2FsU4ij3afuIKWLCjIqNCet1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;304&quot; height=&quot;42&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Player 스크립트에 getDamage변수를 추가한다. 장애물에 닿았을 경우 해당 변수는 true가 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pj6Pl/btrXn9spZiz/HyMtFSQGgU6Wl9vpw4uFsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pj6Pl/btrXn9spZiz/HyMtFSQGgU6Wl9vpw4uFsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pj6Pl/btrXn9spZiz/HyMtFSQGgU6Wl9vpw4uFsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPj6Pl%2FbtrXn9spZiz%2FHyMtFSQGgU6Wl9vpw4uFsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;254&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Obstacle 태그를 가진 장애물안에 있을 경우 getDamage 변수를 true로 만들어주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이어 컬러에서 알파값을 0.7을 줘서 살짝 흐리도록 만들어준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpoiAr/btrXm8ntoQq/jkGFU68UOFYxc3P56V5A1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpoiAr/btrXm8ntoQq/jkGFU68UOFYxc3P56V5A1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpoiAr/btrXm8ntoQq/jkGFU68UOFYxc3P56V5A1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpoiAr%2FbtrXm8ntoQq%2FjkGFU68UOFYxc3P56V5A1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;34&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LxDqW/btrXrUnvkRX/NbRSKYfGB4kmNUTRbNxqbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LxDqW/btrXrUnvkRX/NbRSKYfGB4kmNUTRbNxqbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LxDqW/btrXrUnvkRX/NbRSKYfGB4kmNUTRbNxqbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLxDqW%2FbtrXrUnvkRX%2FNbRSKYfGB4kmNUTRbNxqbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;185&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OnTriggerExit에서는 Obstacle태그를 가진 장애물에서 빠져나갈 때, getDamage를 다시 false로 만들고 컬러도 원래대로 되돌린다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.HP바&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2TJy9/btrXnHv9U2L/ifRwZB2KGlyOvMl8QTaSJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2TJy9/btrXnHv9U2L/ifRwZB2KGlyOvMl8QTaSJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2TJy9/btrXnHv9U2L/ifRwZB2KGlyOvMl8QTaSJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2TJy9%2FbtrXnHv9U2L%2FifRwZB2KGlyOvMl8QTaSJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;484&quot; height=&quot;469&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Slider UI를 하나 생성하고 이름은 HPBar로 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw28rs/btrXrS4hWoe/KzWQTvFClcYZvZzJiMHv10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw28rs/btrXrS4hWoe/KzWQTvFClcYZvZzJiMHv10/img.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;666&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.23&quot; style=&quot;width: 48.6573%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw28rs/btrXrS4hWoe/KzWQTvFClcYZvZzJiMHv10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw28rs%2FbtrXrS4hWoe%2FKzWQTvFClcYZvZzJiMHv10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RvzYj/btrXrTvlX9J/BcDA0ZRMK4XRCPdKPba3zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RvzYj/btrXrTvlX9J/BcDA0ZRMK4XRCPdKPba3zK/img.png&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;649&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.1799%;&quot; data-widthpercent=&quot;50.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RvzYj/btrXrTvlX9J/BcDA0ZRMK4XRCPdKPba3zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRvzYj%2FbtrXrTvlX9J%2FBcDA0ZRMK4XRCPdKPba3zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fill부분은 Color를 빨간색으로, Background부분 Color는 검은색으로 맞춘다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJD2rp/btrXo5wikgD/9FfwI5Xte4iDuKkLCvRovK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJD2rp/btrXo5wikgD/9FfwI5Xte4iDuKkLCvRovK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJD2rp/btrXo5wikgD/9FfwI5Xte4iDuKkLCvRovK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJD2rp%2FbtrXo5wikgD%2F9FfwI5Xte4iDuKkLCvRovK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1016&quot; height=&quot;1024&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 스크립트 HPBar를 생성하고 다음과 같이 코드를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Player 컴포넌트를 받아와서 getDamage 변수가 true일 경우 curHP를 getDamage만큼 깍고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HandleHP함수를 하나 생성해서 value값을 조절하여 체력바가 깍이도록 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 게임 재시작&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmh8Un/btrXqCAD4oG/a1kQeqgkykJWoZyRvtBlB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmh8Un/btrXqCAD4oG/a1kQeqgkykJWoZyRvtBlB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmh8Un/btrXqCAD4oG/a1kQeqgkykJWoZyRvtBlB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmh8Un%2FbtrXqCAD4oG%2Fa1kQeqgkykJWoZyRvtBlB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;285&quot; height=&quot;51&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4ys9q/btrXnIu4ePf/EUcY28f47MOkph0n6zWs21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4ys9q/btrXnIu4ePf/EUcY28f47MOkph0n6zWs21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4ys9q/btrXnIu4ePf/EUcY28f47MOkph0n6zWs21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4ys9q%2FbtrXnIu4ePf%2FEUcY28f47MOkph0n6zWs21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;302&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 UI를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NayNi/btrXn5KjjC1/IbSIBagqdVngDAnDKktoY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NayNi/btrXn5KjjC1/IbSIBagqdVngDAnDKktoY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NayNi/btrXn5KjjC1/IbSIBagqdVngDAnDKktoY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNayNi%2FbtrXn5KjjC1%2FIbSIBagqdVngDAnDKktoY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;146&quot; height=&quot;23&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZxAdc/btrXmBDHrVq/TpcImkbdaORJe4Yog2FHZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZxAdc/btrXmBDHrVq/TpcImkbdaORJe4Yog2FHZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZxAdc/btrXmBDHrVq/TpcImkbdaORJe4Yog2FHZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZxAdc%2FbtrXmBDHrVq%2FTpcImkbdaORJe4Yog2FHZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;294&quot; height=&quot;77&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GameManager 스크립트에서 게임오버 UI인 gamOverSet 과 HP변수가 담겨있는 hpBar변수를 받아온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNztFh/btrXqCtQMhE/s7ywA5khykDAq4WE1KB4NK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNztFh/btrXqCtQMhE/s7ywA5khykDAq4WE1KB4NK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNztFh/btrXqCtQMhE/s7ywA5khykDAq4WE1KB4NK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNztFh%2FbtrXqCtQMhE%2Fs7ywA5khykDAq4WE1KB4NK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;282&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브금과 장애물 생성 변수를 false로 바꾸는 GameStop함수를 작성하고 GameOver함수에서 UI를 띄우며 GameStop함수를 실행하도록 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU8aR4/btrXm9UdGfW/OcngTfIjLWnlc51moGRKPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU8aR4/btrXm9UdGfW/OcngTfIjLWnlc51moGRKPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU8aR4/btrXm9UdGfW/OcngTfIjLWnlc51moGRKPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU8aR4%2FbtrXm9UdGfW%2FOcngTfIjLWnlc51moGRKPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;385&quot; height=&quot;121&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Update에서 hp가 0밑으로 떨어졌을 경우 GameOver함수를 실행하도록한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.일시정지&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKjEej/btrXn6oWXwX/HRpU2zNm1tUS4IwVakWB11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKjEej/btrXn6oWXwX/HRpU2zNm1tUS4IwVakWB11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKjEej/btrXn6oWXwX/HRpU2zNm1tUS4IwVakWB11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKjEej%2FbtrXn6oWXwX%2FHRpU2zNm1tUS4IwVakWB11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;486&quot; height=&quot;473&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;109&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qdJFl/btrXm79X1yi/Xfv5NRHFN9lF2xm8MSH8XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qdJFl/btrXm79X1yi/Xfv5NRHFN9lF2xm8MSH8XK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qdJFl/btrXm79X1yi/Xfv5NRHFN9lF2xm8MSH8XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqdJFl%2FbtrXm79X1yi%2FXfv5NRHFN9lF2xm8MSH8XK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;109&quot; height=&quot;90&quot; data-origin-width=&quot;109&quot; data-origin-height=&quot;90&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PauseButton을 하나 생성하고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b81lGR/btrXnJHvuvT/IVWsxmrpUF04CgEN7WlGO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b81lGR/btrXnJHvuvT/IVWsxmrpUF04CgEN7WlGO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b81lGR/btrXnJHvuvT/IVWsxmrpUF04CgEN7WlGO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb81lGR%2FbtrXnJHvuvT%2FIVWsxmrpUF04CgEN7WlGO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;253&quot; height=&quot;99&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzSyg1/btrXm9UdJS7/m2ABKp8hNyfPk8CbAKPC2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzSyg1/btrXm9UdJS7/m2ABKp8hNyfPk8CbAKPC2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzSyg1/btrXm9UdJS7/m2ABKp8hNyfPk8CbAKPC2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzSyg1%2FbtrXm9UdJS7%2Fm2ABKp8hNyfPk8CbAKPC2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;622&quot; height=&quot;304&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼을 눌렀을 경우 띄울 UI를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;1075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VUpkZ/btrXnHiC31N/fXJqav9hovd9sl06THtBWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VUpkZ/btrXnHiC31N/fXJqav9hovd9sl06THtBWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VUpkZ/btrXnHiC31N/fXJqav9hovd9sl06THtBWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVUpkZ%2FbtrXnHiC31N%2FfXJqav9hovd9sl06THtBWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;472&quot; height=&quot;1075&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;1075&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PauseMenu 스크립트를 하나 생성하여 다음과 같이 코드를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;esc버튼을 눌렀을 경우 각각 PauseGame 함수와 ResumeGame함수를 실행시키도록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Time.timeScale이 0일 경우 게임이 멈추며 1일 경우 게임이 진행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 함수들은 버튼을 클릭했을 경우에도 작동되도록 클라이언트에서 연결한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;105&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r850J/btrXmJO0xyN/VRjAmAGWLgkBpGejyDUiK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r850J/btrXmJO0xyN/VRjAmAGWLgkBpGejyDUiK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r850J/btrXmJO0xyN/VRjAmAGWLgkBpGejyDUiK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr850J%2FbtrXmJO0xyN%2FVRjAmAGWLgkBpGejyDUiK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;592&quot; height=&quot;105&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;105&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>유니티/토이프로젝트 - 엘리듬</category>
      <category>c#</category>
      <category>개인</category>
      <category>엘리듬</category>
      <category>유니티</category>
      <category>프로젝트</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/219</guid>
      <comments>https://mun-coding.tistory.com/219#entry219comment</comments>
      <pubDate>Sat, 28 Jan 2023 17:10:06 +0900</pubDate>
    </item>
    <item>
      <title>백준 9663 c++ N-Queen</title>
      <link>https://mun-coding.tistory.com/218</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9663&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/9663&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674882672729&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;9663번: N-Queen&quot; data-og-description=&quot;N-Queen 문제는&amp;nbsp;크기가 N &amp;times; N인 체스판 위에 퀸 N개를&amp;nbsp;서로 공격할 수 없게 놓는&amp;nbsp;문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9663&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9663&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LR9Oq/hyRpP7sTY2/egGIqsrnpCLvHgK2ZuqBd1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9663&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9663&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LR9Oq/hyRpP7sTY2/egGIqsrnpCLvHgK2ZuqBd1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;9663번: N-Queen&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N-Queen 문제는&amp;nbsp;크기가 N &amp;times; N인 체스판 위에 퀸 N개를&amp;nbsp;서로 공격할 수 없게 놓는&amp;nbsp;문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N-Queen 문제는&amp;nbsp;크기가 N &amp;times; N인 체스판 위에 퀸 N개를&amp;nbsp;서로 공격할 수 없게 놓는&amp;nbsp;문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N이 주어진다. (1 &amp;le; N &amp;lt; 15)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는&amp;nbsp;경우의 수를 출력한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deqHXE/btrXooCQmbk/XRGdRwuqVErHjYvwDFdLJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deqHXE/btrXooCQmbk/XRGdRwuqVErHjYvwDFdLJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deqHXE/btrXooCQmbk/XRGdRwuqVErHjYvwDFdLJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeqHXE%2FbtrXooCQmbk%2FXRGdRwuqVErHjYvwDFdLJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;153&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674888037610&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

int N;
int result;
int col[15];//col[x] = 1 // x행의 queen위치는 1열

bool check(int row)
{
	for (int i = 0; i &amp;lt; row; i++)
	{
		if (col[row] == col[i] || row - i == abs(col[row] - col[i]))//세로, 대각선에 퀸이 있다면 false
			return false;
	}
	return true;
}

void dfs(int row)
{
	if (row == N)
	{
		result++;
		return;
	}
	for (int i = 0; i &amp;lt; N; i++)
	{
		col[row] = i;//일단 해당 row의 i열에 퀸을 넣어보고
		if (check(row))//check함수를 통해 다른 퀸과 안 닿는지 검사
		{
			dfs(row + 1);//통과하면 다음 행으로
		}
	}
    return;
}

int main()
{
	cin &amp;gt;&amp;gt; N;

	dfs(0);
	cout &amp;lt;&amp;lt; result;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>9663</category>
      <category>C++</category>
      <category>N-Queen</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/218</guid>
      <comments>https://mun-coding.tistory.com/218#entry218comment</comments>
      <pubDate>Sat, 28 Jan 2023 15:41:01 +0900</pubDate>
    </item>
    <item>
      <title>엘리듬(1일차)  - 캐릭터 이동, 매트로놈 생성,장애물 소환</title>
      <link>https://mun-coding.tistory.com/217</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 플레이어 이동&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;58&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLpYY5/btrXom5vKIH/rPW4hW66LPAJgPE5klwya0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLpYY5/btrXom5vKIH/rPW4hW66LPAJgPE5klwya0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLpYY5/btrXom5vKIH/rPW4hW66LPAJgPE5klwya0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLpYY5%2FbtrXom5vKIH%2FrPW4hW66LPAJgPE5klwya0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;58&quot; height=&quot;64&quot; data-origin-width=&quot;58&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;1089&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NkJV2/btrXn5JHGPg/e3J0EPns8RUJZI5IFxfSy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NkJV2/btrXn5JHGPg/e3J0EPns8RUJZI5IFxfSy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NkJV2/btrXn5JHGPg/e3J0EPns8RUJZI5IFxfSy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNkJV2%2FbtrXn5JHGPg%2Fe3J0EPns8RUJZI5IFxfSy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;1089&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;1089&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Collider &lt;/span&gt;&lt;/b&gt;- 장애물과 맵 경계선과의 출돌을 위한 컴포넌트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Rigidbody&lt;/span&gt; &lt;/b&gt;- 플레이어에게 힘을 주기 위한 컴포넌트(실질적인 이동) BodyType은 스크립트로 제어 할 것이기 때문에 &lt;span style=&quot;color: #000000;&quot;&gt;Kinematic&lt;/span&gt;으로 설정해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기본 컴포는트를 추가한 다음 새로운 컴포넌트를 생성하고 이름은 Player로 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYAMhI/btrXnJGTrTS/6kpBIZDyveSHOhFIO2aII1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYAMhI/btrXnJGTrTS/6kpBIZDyveSHOhFIO2aII1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYAMhI/btrXnJGTrTS/6kpBIZDyveSHOhFIO2aII1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYAMhI%2FbtrXnJGTrTS%2F6kpBIZDyveSHOhFIO2aII1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;539&quot; height=&quot;312&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjmJY9/btrXn9rM8Ne/lpWu4JKF4A5Ag0qmSkGeYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjmJY9/btrXn9rM8Ne/lpWu4JKF4A5Ag0qmSkGeYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjmJY9/btrXn9rM8Ne/lpWu4JKF4A5Ag0qmSkGeYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjmJY9%2FbtrXn9rM8Ne%2FlpWu4JKF4A5Ag0qmSkGeYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;460&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Box Collider&lt;/span&gt;&lt;/b&gt;로 경계선을 구분짓는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Is Trigger&lt;/span&gt;를 체크해주어 플레이어가 해당 경계선에 닿았을 경우 그 이상으로 움직이지 못하게 설정해줄거다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOUrip/btrXn6V93GH/h1maliEHxfklQxTvLzpedK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOUrip/btrXn6V93GH/h1maliEHxfklQxTvLzpedK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOUrip/btrXn6V93GH/h1maliEHxfklQxTvLzpedK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOUrip%2FbtrXn6V93GH%2Fh1maliEHxfklQxTvLzpedK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;212&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Player&lt;/span&gt;&lt;/b&gt;스크립트로 가서 변수들을 선언하고 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;SpriteRenderer&lt;/span&gt;&lt;/b&gt;변수같은 경우는 컴포넌트를 받아와야 하므로 &lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;Awake&lt;/span&gt;&lt;/b&gt;함수에서 초기화 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tJmdz/btrXmysQ9jL/v61E4sft3hjheMr7Ekk5lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tJmdz/btrXmysQ9jL/v61E4sft3hjheMr7Ekk5lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tJmdz/btrXmysQ9jL/v61E4sft3hjheMr7Ekk5lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtJmdz%2FbtrXmysQ9jL%2Fv61E4sft3hjheMr7Ekk5lK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;96&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wTyuv/btrXnJNEJZ3/m8c5qVhCBkfQQ3NS9LeFdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wTyuv/btrXnJNEJZ3/m8c5qVhCBkfQQ3NS9LeFdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wTyuv/btrXnJNEJZ3/m8c5qVhCBkfQQ3NS9LeFdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwTyuv%2FbtrXnJNEJZ3%2Fm8c5qVhCBkfQQ3NS9LeFdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;642&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;move&lt;/b&gt;&lt;/span&gt;함수를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 Border에 닿은 상태에서 그 이상으로 키가 눌러진다면 h와 v각각을 0으로 만들어 경계 밖으로 나갈 수 없도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 if문에 걸리지 않는다면 현재위치 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;curPos&lt;/span&gt;&lt;/b&gt; 에 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;nextPos&lt;/span&gt;&lt;/b&gt;를 더해주어 플레이어를 이동시킨다. 이 때 &lt;span style=&quot;color: #f89009;&quot;&gt;Time.deltaTime&lt;/span&gt;을 곱해주어야 컴퓨터 성능간에 플레이 차이가 발생하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 횡 이동인 h가 음수, 즉 왼쪽방향으로 이동할 경우 &lt;span style=&quot;color: #f89009;&quot;&gt;flipX&lt;/span&gt;를 true로 만들어 플레이어가 왼쪽을 바라보도록 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 매트로놈 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pz8sZ/btrXnKFYENd/fA70lELE1tKgqIkNL5430k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pz8sZ/btrXnKFYENd/fA70lELE1tKgqIkNL5430k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pz8sZ/btrXnKFYENd/fA70lELE1tKgqIkNL5430k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpz8sZ%2FbtrXnKFYENd%2FfA70lELE1tKgqIkNL5430k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;180&quot; height=&quot;130&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사각형을 늘려 회전하며 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;bpm&lt;/span&gt;&lt;/b&gt;을 알 수 있도록 하는 오브젝트를 생성하고 스크립트를 추가한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRboq9/btrXn6viwgJ/QjBCQpRSSUn8fAn9fiLukk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRboq9/btrXn6viwgJ/QjBCQpRSSUn8fAn9fiLukk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRboq9/btrXn6viwgJ/QjBCQpRSSUn8fAn9fiLukk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRboq9%2FbtrXn6viwgJ%2FQjBCQpRSSUn8fAn9fiLukk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;609&quot; height=&quot;74&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;74&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.musicca.com/ko/metronome&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.musicca.com/ko/metronome&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674823117885&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;온라인 메트로놈 | Musicca&quot; data-og-description=&quot;오디오 및 비주얼 비트를 활용한 무료 온라인 메트로놈. BPM을 선택하거나 템포를 맞추세요. 연습할 때 큰 도움이 됩니다.&quot; data-og-host=&quot;www.musicca.com&quot; data-og-source-url=&quot;https://www.musicca.com/ko/metronome&quot; data-og-url=&quot;https://www.musicca.com/ko/metronome&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VFhlG/hyRpKSe3XE/xtViCywoR1zvWEZysFOp9k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.musicca.com/ko/metronome&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.musicca.com/ko/metronome&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VFhlG/hyRpKSe3XE/xtViCywoR1zvWEZysFOp9k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;온라인 메트로놈 | Musicca&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오디오 및 비주얼 비트를 활용한 무료 온라인 메트로놈. BPM을 선택하거나 템포를 맞추세요. 연습할 때 큰 도움이 됩니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.musicca.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 사이트에서 불러올 노래의 bpm을 파악하여 bpm변수로 지정하고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcvgSs/btrXpcaGhR0/4mkVknXw7yxWu0K0UZQFYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcvgSs/btrXpcaGhR0/4mkVknXw7yxWu0K0UZQFYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcvgSs/btrXpcaGhR0/4mkVknXw7yxWu0K0UZQFYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcvgSs%2FbtrXpcaGhR0%2F4mkVknXw7yxWu0K0UZQFYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;687&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 코드를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노래가 켜졌을 때, &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;60/bpm&lt;/span&gt;&lt;/b&gt;만큼의 시간이 지났을 때 45도 오브젝트를 회전하도록한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;bpm&lt;/span&gt;&lt;/b&gt;은 배경화면 오브젝트에 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;AudioSource&lt;/span&gt; &lt;/b&gt;컴포넌트를 추가하여 해당 컴포넌트에 넣어두었고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RDx9y/btrXm6itiGk/ef30bOwzPVgT8VlPQ7V6Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RDx9y/btrXm6itiGk/ef30bOwzPVgT8VlPQ7V6Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RDx9y/btrXm6itiGk/ef30bOwzPVgT8VlPQ7V6Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRDx9y%2FbtrXm6itiGk%2Fef30bOwzPVgT8VlPQ7V6Q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;642&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 스크립트를 추가하여 3초 뒤 브금이 실행되도록 하였다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3.장애물 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pM7S2/btrXonp0eaw/kcnkITISeKXnOLqRNgrVU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pM7S2/btrXonp0eaw/kcnkITISeKXnOLqRNgrVU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pM7S2/btrXonp0eaw/kcnkITISeKXnOLqRNgrVU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpM7S2%2FbtrXonp0eaw%2FkcnkITISeKXnOLqRNgrVU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;277&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 장애물이 나올 위치에 R,G,B,A 값을 조정하여 경고 오브젝트를 하나 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIPTUA/btrXo4wZlnT/2kNzL2KMkQ6EFGkqTaHSd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIPTUA/btrXo4wZlnT/2kNzL2KMkQ6EFGkqTaHSd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIPTUA/btrXo4wZlnT/2kNzL2KMkQ6EFGkqTaHSd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIPTUA%2FbtrXo4wZlnT%2F2kNzL2KMkQ6EFGkqTaHSd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;743&quot; height=&quot;437&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;Invoke&lt;/span&gt;&lt;/b&gt;를 통해 1초뒤에 해당 위치에 장애물을 소환하고 자신을 삭제하도록하는 스크립트를 추가한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4DPGC/btrXn8UaiFl/2ppyYFlmzQNVukK5bbRZb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4DPGC/btrXn8UaiFl/2ppyYFlmzQNVukK5bbRZb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4DPGC/btrXn8UaiFl/2ppyYFlmzQNVukK5bbRZb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4DPGC%2FbtrXn8UaiFl%2F2ppyYFlmzQNVukK5bbRZb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;311&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo2g79/btrXmSdH260/k8FubLGbz5a5mzZZI6khU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo2g79/btrXmSdH260/k8FubLGbz5a5mzZZI6khU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo2g79/btrXmSdH260/k8FubLGbz5a5mzZZI6khU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo2g79%2FbtrXmSdH260%2Fk8FubLGbz5a5mzZZI6khU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;534&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 장애물이 될 오브젝트도 하나 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경고 오브젝트와 다르게 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Rigidbody&lt;/span&gt; &lt;/b&gt;와 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;Collider&lt;/span&gt; &lt;/b&gt;컴포넌트를 추가하고 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;IsTrigger&lt;/span&gt;&lt;/b&gt;를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기도 역시 새로운 스크립트를 작성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddoTSM/btrXn6B23NR/PUfn2NebkZabgso6gN2RA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddoTSM/btrXn6B23NR/PUfn2NebkZabgso6gN2RA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddoTSM/btrXn6B23NR/PUfn2NebkZabgso6gN2RA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddoTSM%2FbtrXn6B23NR%2FPUfn2NebkZabgso6gN2RA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;517&quot; height=&quot;480&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;Invoke&lt;/span&gt;&lt;/b&gt;를 통해 1초뒤 자신을 삭제시키도록 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qUlR6/btrXn6hKNfg/xvQHo9i1fvMqr0AAKdjiek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qUlR6/btrXn6hKNfg/xvQHo9i1fvMqr0AAKdjiek/img.png&quot; data-origin-width=&quot;82&quot; data-origin-height=&quot;80&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.1775%; margin-right: 10px;&quot; data-widthpercent=&quot;51.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qUlR6/btrXn6hKNfg/xvQHo9i1fvMqr0AAKdjiek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqUlR6%2FbtrXn6hKNfg%2FxvQHo9i1fvMqr0AAKdjiek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;82&quot; height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEZHjV/btrXm9lZdCN/Kyohwr4n97WCzORLthko0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEZHjV/btrXm9lZdCN/Kyohwr4n97WCzORLthko0k/img.png&quot; data-origin-width=&quot;84&quot; data-origin-height=&quot;88&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;48.22&quot; style=&quot;width: 47.6597%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEZHjV/btrXm9lZdCN/Kyohwr4n97WCzORLthko0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEZHjV%2FbtrXm9lZdCN%2FKyohwr4n97WCzORLthko0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;84&quot; height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완성된 오브젝트는 프리펩으로 저장한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;81&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkGOUZ/btrXpbJBNqs/cvstMwmpRpLkFF4viyFNMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkGOUZ/btrXpbJBNqs/cvstMwmpRpLkFF4viyFNMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkGOUZ/btrXpbJBNqs/cvstMwmpRpLkFF4viyFNMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkGOUZ%2FbtrXpbJBNqs%2FcvstMwmpRpLkFF4viyFNMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;81&quot; height=&quot;95&quot; data-origin-width=&quot;81&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 오브젝트를 생성하고 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;GameManager&lt;/b&gt; &lt;/span&gt;스크립트를 작성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj8tZx/btrXpbQnSTl/J42aHjLGx17WUTq73Q0iBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj8tZx/btrXpbQnSTl/J42aHjLGx17WUTq73Q0iBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj8tZx/btrXpbQnSTl/J42aHjLGx17WUTq73Q0iBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj8tZx%2FbtrXpbQnSTl%2FJ42aHjLGx17WUTq73Q0iBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;274&quot; height=&quot;129&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 장애물들이 소환될 위치를 빈 오브젝트로 지정하고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/meEvD/btrXnHo1tVS/DDcMJuYbCg1ZMpU5kLOeN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/meEvD/btrXnHo1tVS/DDcMJuYbCg1ZMpU5kLOeN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/meEvD/btrXnHo1tVS/DDcMJuYbCg1ZMpU5kLOeN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmeEvD%2FbtrXnHo1tVS%2FDDcMJuYbCg1ZMpU5kLOeN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;141&quot; height=&quot;161&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Uj3r/btrXpb3VxRD/3L8yJbQMj9QTiZ8aWX6jb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Uj3r/btrXpb3VxRD/3L8yJbQMj9QTiZ8aWX6jb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Uj3r/btrXpb3VxRD/3L8yJbQMj9QTiZ8aWX6jb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Uj3r%2FbtrXpb3VxRD%2F3L8yJbQMj9QTiZ8aWX6jb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;432&quot; height=&quot;244&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 아이콘으로 보기 쉽게 나타낸다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pMcB7/btrXmlHueHw/j1bKD3hnwxMXlfKwQM9CqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pMcB7/btrXmlHueHw/j1bKD3hnwxMXlfKwQM9CqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pMcB7/btrXmlHueHw/j1bKD3hnwxMXlfKwQM9CqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpMcB7%2FbtrXmlHueHw%2Fj1bKD3hnwxMXlfKwQM9CqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;309&quot; height=&quot;96&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;GameManager&lt;/span&gt; &lt;/b&gt;스크립트의 변수 선언은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;spawnPoints&lt;/span&gt; &lt;/b&gt;- 장애물을 소환할 위치들의 배열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;warnObject&lt;/span&gt; &lt;/b&gt;- 경고표시를 소환할 프리팹&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;bpm&lt;/span&gt; &lt;/b&gt;- 박자에 맞춰 장애물을 소환할 시간변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;currentTime&lt;/span&gt; &lt;/b&gt;- 현재 시간 변수&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oUeDn/btrXnupPVXh/wevGRXUqfdB4XiC211KuuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oUeDn/btrXnupPVXh/wevGRXUqfdB4XiC211KuuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oUeDn/btrXnupPVXh/wevGRXUqfdB4XiC211KuuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoUeDn%2FbtrXnupPVXh%2FwevGRXUqfdB4XiC211KuuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;924&quot; height=&quot;639&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;SpawnWarn&lt;/span&gt;&lt;/b&gt;이라는 함수를 만들어 숫자 0~6사이에 &lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;Instantiate&lt;/span&gt;&lt;/b&gt;를 통해 경고 오브젝트를 생성하도록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 &lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;SpawnWarn&lt;/span&gt; &lt;/b&gt;함수는 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Update&lt;/span&gt;&lt;/b&gt;에서 일정 시간이 지나야만 실행되도록 코드를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>유니티/토이프로젝트 - 엘리듬</category>
      <category>개발</category>
      <category>개인</category>
      <category>게임</category>
      <category>엘리듬</category>
      <category>유니티</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/217</guid>
      <comments>https://mun-coding.tistory.com/217#entry217comment</comments>
      <pubDate>Fri, 27 Jan 2023 22:00:49 +0900</pubDate>
    </item>
    <item>
      <title>백준 16198 c++ 에너지 모으기</title>
      <link>https://mun-coding.tistory.com/216</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16198&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16198&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674784412814&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16198번: 에너지 모으기&quot; data-og-description=&quot;N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16198&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16198&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16198&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16198&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16198번: 에너지 모으기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에너지 구슬 하나를 고른다. 고른 에너지 구슬의 번호를 x라고 한다. 단, 첫 번째와 마지막 에너지 구슬은 고를 수 없다.&lt;/li&gt;
&lt;li&gt;x번째 에너지 구슬을 제거한다.&lt;/li&gt;
&lt;li&gt;Wx-1&amp;nbsp;&amp;times; Wx+1의 에너지를 모을 수 있다.&lt;/li&gt;
&lt;li&gt;N을 1 감소시키고, 에너지 구슬을 1번부터 N번까지로 다시 번호를 매긴다. 번호는 첫 구슬이 1번, 다음 구슬이 2번, ... 과 같이 매겨야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N과 에너지 구슬의 무게가 주어졌을 때, 모을 수 있는 에너지 양의 최댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 에너지 구슬의 개수 N(3 &amp;le; N &amp;le; 10)이 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄에는 에너지 구슬의 무게 W1, W2, ..., WN을 공백으로 구분해 주어진다. (1 &amp;le; Wi&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 1,000)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 모을 수 있는 에너지의 최댓값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUmucw/btrXfNYs5IE/5eVs8YOhib4mZwh4LNRouk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUmucw/btrXfNYs5IE/5eVs8YOhib4mZwh4LNRouk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUmucw/btrXfNYs5IE/5eVs8YOhib4mZwh4LNRouk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUmucw%2FbtrXfNYs5IE%2F5eVs8YOhib4mZwh4LNRouk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1442&quot; height=&quot;832&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674784599793&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

int N;//횟수
int arr[10];//숫자 입력받을 배열
int check[10];//기준점으로 지정했을 때 true로
int sum[8];//한번의 재귀에서 합들을 저장할 배열
int MAX = 0;//합의 최대값

void dfs(int count)
{
	if (count == N - 2)
	{
		int result = 0;
		for (int i = 0; i &amp;lt; 8; i++)
		{
			result += sum[i];//모든 합 더해주기
		}
		MAX = max(MAX, result);//기존 max값과 비교
		return;
	}

	for (int i = 1; i &amp;lt; N - 1; i++)
	{
		if (check[i])//이미 체크한 기준점이면 continue
			continue;
		check[i] = true;//현재 기준점을 true로
		int front = i - 1;
		int back = i + 1;
		while (check[front])//true 기준점으로 사용되지 않은 앞까지 땡긴다.
			front--;
		while (check[back])//반대로 뒤로 땡김
			back++;
		sum[count] = arr[front] * arr[back];
		dfs(count + 1);
		check[i] = false;
	}

}

int main()
{
	cin &amp;gt;&amp;gt; N;
	for (int i = 0; i &amp;lt; N; i++)
	{
		cin &amp;gt;&amp;gt; arr[i];
	}

	dfs(0);
	cout &amp;lt;&amp;lt; MAX;

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16198</category>
      <category>C++</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>브루트포스</category>
      <category>알고리즘</category>
      <category>에너지 모으기</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/216</guid>
      <comments>https://mun-coding.tistory.com/216#entry216comment</comments>
      <pubDate>Fri, 27 Jan 2023 10:57:12 +0900</pubDate>
    </item>
    <item>
      <title>백준 16197 c++ 두 동전</title>
      <link>https://mun-coding.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16197&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16197&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674707308746&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16197번: 두 동전&quot; data-og-description=&quot;N&amp;times;M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1&amp;times;1크기의 정사각형 칸으로 나누어져 있고,&amp;nbsp;각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16197&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16197&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kP64V/hyRpE4jjZl/bAC22i3rYIV9T6FPHdq7QK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16197&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16197&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kP64V/hyRpE4jjZl/bAC22i3rYIV9T6FPHdq7QK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16197번: 두 동전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N&amp;times;M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1&amp;times;1크기의 정사각형 칸으로 나누어져 있고,&amp;nbsp;각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;times;M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1&amp;times;1크기의 정사각형 칸으로 나누어져 있고,&amp;nbsp;각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, 두 동전의 위치는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼은 &quot;왼쪽&quot;, &quot;오른쪽&quot;, &quot;위&quot;, &quot;아래&quot;와 같이 4가지가 있다. 버튼을 누르면 두 동전이 버튼에 쓰여 있는 방향으로 동시에 이동하게 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동전이 이동하려는 칸이 벽이면, 동전은 이동하지 않는다.&lt;/li&gt;
&lt;li&gt;동전이 이동하려는 방향에 칸이 없으면 동전은 보드 바깥으로 떨어진다.&lt;/li&gt;
&lt;li&gt;그 외의 경우에는 이동하려는 방향으로 한 칸 이동한다.이동하려는 칸에 동전이 있는 경우에도 한 칸 이동한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 동전 중 하나만 보드에서 떨어뜨리기 위해 버튼을 최소 몇&amp;nbsp;번 눌러야하는지 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. (1 &amp;le; N, M &amp;le; 20)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄부터 N개의 줄에는 보드의 상태가 주어진다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;o: 동전&lt;/li&gt;
&lt;li&gt;.: 빈 칸&lt;/li&gt;
&lt;li&gt;#: 벽&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동전의 개수는 항상 2개이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 두 동전 중 하나만 보드에서 떨어뜨리기 위해 눌러야 하는 버튼의 최소 횟수를 출력한다. 만약, 두 동전을 떨어뜨릴 수 없거나, 버튼을 10번보다 많이 눌러야 한다면, -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HxkXw/btrXe9yTASa/zBqViPahWKJ0NhQSR8vl5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HxkXw/btrXe9yTASa/zBqViPahWKJ0NhQSR8vl5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HxkXw/btrXe9yTASa/zBqViPahWKJ0NhQSR8vl5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHxkXw%2FbtrXe9yTASa%2FzBqViPahWKJ0NhQSR8vl5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;576&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1Iw6L/btrW9l8U9dl/uxkBjDc0mT7e01nS2iQkY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1Iw6L/btrW9l8U9dl/uxkBjDc0mT7e01nS2iQkY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1Iw6L/btrW9l8U9dl/uxkBjDc0mT7e01nS2iQkY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1Iw6L%2FbtrW9l8U9dl%2FuxkBjDc0mT7e01nS2iQkY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1442&quot; height=&quot;704&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KnYtb/btrXcpWswMV/1iClwJYubQXJ1Ut9pNs48k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KnYtb/btrXcpWswMV/1iClwJYubQXJ1Ut9pNs48k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KnYtb/btrXcpWswMV/1iClwJYubQXJ1Ut9pNs48k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKnYtb%2FbtrXcpWswMV%2F1iClwJYubQXJ1Ut9pNs48k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1460&quot; height=&quot;333&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674707891495&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

int n, m;
char arr[21][21];
int dx[] = { 1,-1,0,0 };//상하좌우
int dy[] = { 0,0,-1,1 };

int nx[2];//현재 코인의 위치
int ny[2];

int minimum = 11;
bool check;

//인자 count, 1번동전 위치, 2번동전 위치
void dfs(int count, int nx1, int ny1,int nx2,int ny2)
{
	if (count == 10)
	{
		return;
	}

	for (int i = 0; i &amp;lt; 4; i++)
	{
		int nextX1 = nx1+dx[i];
		int nextY1 = ny1+dy[i];
		int nextX2 = nx2+dx[i];
		int nextY2 = ny2+dy[i];

		if ((nextX1 &amp;lt; 0 || nextX1 &amp;gt;= n || nextY1 &amp;lt; 0 || nextY1 &amp;gt;= m) &amp;amp;&amp;amp; (nextX2 &amp;lt; 0 || nextX2 &amp;gt;= n || nextY2 &amp;lt; 0 || nextY2 &amp;gt;= m))//2개다 범위 밖으로 나갔을 때
		{
			continue;
		}
		else if ((nextX1 &amp;gt;= 0 &amp;amp;&amp;amp; nextX1 &amp;lt; n &amp;amp;&amp;amp; nextY1 &amp;gt;= 0 &amp;amp;&amp;amp; nextY1 &amp;lt; m) &amp;amp;&amp;amp; (nextX2 &amp;gt;= 0 &amp;amp;&amp;amp; nextX2 &amp;lt; n &amp;amp;&amp;amp; nextY2 &amp;gt;= 0 &amp;amp;&amp;amp; nextY2 &amp;lt; m))//2개다 범위 안일때
		{
			if (arr[nextX1][nextY1] == '#' &amp;amp;&amp;amp; arr[nextX2][nextY2] == '#')
				continue;
			if (arr[nextX1][nextY1] == '#')
			{
				nextX1 = nx1;
				nextY1 = ny1;
			}
			if (arr[nextX2][nextY2] == '#')
			{
				nextX2 = nx2;
				nextY2 = ny2;
			}
			dfs(count + 1, nextX1, nextY1, nextX2, nextY2);
		}
		else
		{
			minimum = min(minimum, count+1);
			return;
		}
	}
}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			cin &amp;gt;&amp;gt; arr[i][j];
		}
	}
	//코인 위치 저장
	int k = 0;
	for (int i = 0; i &amp;lt; n; i++)
	{
		for (int j = 0; j &amp;lt; m; j++)
		{
			if (arr[i][j] == 'o')
			{
				nx[k] = i;
				ny[k] = j;//현재 코인의 위치 초기화
				k++;
			}
		}
	}
	
	dfs(0, nx[0], ny[0], nx[1], ny[1]);

	if (minimum == 11)
		cout &amp;lt;&amp;lt; -1;
	else
		cout &amp;lt;&amp;lt; minimum;

	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>16197</category>
      <category>C++</category>
      <category>DFS</category>
      <category>깊이우선탐색</category>
      <category>두 동전</category>
      <category>백준</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/215</guid>
      <comments>https://mun-coding.tistory.com/215#entry215comment</comments>
      <pubDate>Thu, 26 Jan 2023 13:39:13 +0900</pubDate>
    </item>
    <item>
      <title>백준 15658 c++ 연산자 끼워넣기(2)</title>
      <link>https://mun-coding.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15658&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/15658&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674609760654&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;15658번: 연산자 끼워넣기 (2)&quot; data-og-description=&quot;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다. 연산자의 개수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15658&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15658&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dSF7mz/hyRnc24LIT/0w3l16mDnXkVmHhbKQaQK1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15658&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15658&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dSF7mz/hyRnc24LIT/0w3l16mDnXkVmHhbKQaQK1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;15658번: 연산자 끼워넣기 (2)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다. 연산자의 개수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다. 연산자의 개수는 N-1보다 많을 수도 있다. 모든 수의 사이에는 연산자를&amp;nbsp;한 개 끼워넣어야 하며, 주어진 연산자를 모두 사용하지 않고&amp;nbsp;모든 수의 사이에 연산자를 끼워넣을 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 3개, 뺄셈(-) 2개, 곱셈(&amp;times;) 1개, 나눗셈(&amp;divide;) 1개인 경우에는 총 250가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+2+3-4&amp;times;5&amp;divide;6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6&lt;/li&gt;
&lt;li&gt;1+2+3+4-5-6&lt;/li&gt;
&lt;li&gt;1+2+3-4-5&amp;times;6&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식의 계산은 연산자 우선 순위를 무시하고 앞에서부터 진행해야 한다. 또, 나눗셈은 정수 나눗셈으로 몫만 취한다. 음수를 양수로 나눌 때는 C++14의 기준을 따른다. 즉, 양수로 바꾼 뒤 몫을 취하고, 그 몫을 음수로 바꾼 것과 같다.&amp;nbsp;이에 따라서, 위의 식 4개의 결과를 계산해보면 아래와&amp;nbsp;같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+2+3-4&amp;times;5&amp;divide;6 = 1&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6 = 12&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6 = 5&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6 = 7&lt;/li&gt;
&lt;li&gt;1+2+3+4-5-6 =&amp;nbsp;-1&lt;/li&gt;
&lt;li&gt;1+2+3-4-5&amp;times;6 =&amp;nbsp;-18&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수와 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은&amp;nbsp;4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,&amp;nbsp;곱셈(&amp;times;)의 개수, 나눗셈(&amp;divide;)의 개수이다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 만들 수 있는 식의 결과의 최댓값을, 둘째 줄에는 최솟값을 출력한다. 연산자를 어떻게 끼워넣어도&amp;nbsp;항상 -10억보다 크거나 같고, 10억보다 작거나 같은 결과가 나오는 입력만 주어진다. 또한, 앞에서부터 계산했을 때, 중간에 계산되는 식의 결과도 항상 -10억보다 크거나 같고, 10억보다 작거나 같다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RmUhs/btrW7UVOUho/8h06Dz9LDp5IiBm4wnMwVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RmUhs/btrW7UVOUho/8h06Dz9LDp5IiBm4wnMwVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RmUhs/btrW7UVOUho/8h06Dz9LDp5IiBm4wnMwVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRmUhs%2FbtrW7UVOUho%2F8h06Dz9LDp5IiBm4wnMwVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;721&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;721&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674609793441&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;climits&amp;gt;
using namespace std;

int N;
vector&amp;lt;int&amp;gt; input;
int MAX = INT_MIN;
int MIN = INT_MAX;
int oper[4]; //oper[0] == +
			//oper[1] == -
			//oper[2] == *
			//oper[3] == /
int operArr[10];

void dfs(int count)
{
	if (count == N)
	{
		int result = input[0];
		for (int i = 1; i &amp;lt; N; i++)
		{
			switch (operArr[i])
			{
			case 1:
				result = result + input[i];
				break;
			case 2:
				result = result - input[i];
				break;
			case 3:
				result = result * input[i];
				break;
			case 4:
				result = result / input[i];
				break;

			}
		}
		MAX = max(MAX, result);
		MIN = min(MIN, result);
		return;
	}
	for (int i = 0; i &amp;lt; 4; i++)
	{
		if (oper[i] &amp;gt; 0)
		{
			operArr[count] = i+1;
			oper[i]--;
			dfs(count + 1);
			oper[i]++;
		}
	}
}

int main()
{
	cin &amp;gt;&amp;gt; N;
	for (int i = 0; i &amp;lt; N; i++)
	{
		int getNum;
		cin &amp;gt;&amp;gt; getNum;
		input.push_back(getNum);
	}

	for (int i = 0; i &amp;lt; 4; i++)
	{
		cin &amp;gt;&amp;gt; oper[i];
	}
	dfs(1);
	cout &amp;lt;&amp;lt; MAX &amp;lt;&amp;lt; '\n' &amp;lt;&amp;lt; MIN;

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>15658</category>
      <category>C++</category>
      <category>DFS</category>
      <category>깊이우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/214</guid>
      <comments>https://mun-coding.tistory.com/214#entry214comment</comments>
      <pubDate>Wed, 25 Jan 2023 10:23:42 +0900</pubDate>
    </item>
    <item>
      <title>백준 14225 c++ 부분수열의 합</title>
      <link>https://mun-coding.tistory.com/213</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14225&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14225&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674562147784&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;14225번: 부분수열의 합&quot; data-og-description=&quot;수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14225&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14225&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWyWeg/hyRm8MSYiE/TEqzgbSoIkRdGSqBvzRSB1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14225&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14225&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWyWeg/hyRm8MSYiE/TEqzgbSoIkRdGSqBvzRSB1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;14225번: 부분수열의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 수 있다. 하지만, 4는 만들 수 없기 때문에 정답은 4이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수열 S의 크기 N이 주어진다. (1 &amp;le; N &amp;le; 20)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째 줄에는 수열 S가 주어진다. S를 이루고있는 수는 100,000보다 작거나 같은 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에&amp;nbsp;수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv1ytU/btrWUcYeisb/Hxn1pY3WP6P0IumIanlT40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv1ytU/btrWUcYeisb/Hxn1pY3WP6P0IumIanlT40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv1ytU/btrWUcYeisb/Hxn1pY3WP6P0IumIanlT40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv1ytU%2FbtrWUcYeisb%2FHxn1pY3WP6P0IumIanlT40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1268&quot; height=&quot;549&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674562245369&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int N;
vector&amp;lt;int&amp;gt; getNum;
bool check[2000001];

void Recur(int count, int sum)//재귀적으로 부분수열의 합을 탐색할 함수
{
	check[sum] = true;
	if (count == N)
		return;
	Recur(count + 1, sum);
	Recur(count + 1, sum+getNum[count]);
}


int main()
{
	cin &amp;gt;&amp;gt; N;
	
	for (int i = 0; i &amp;lt; N; i++)
	{
		int n;
		cin &amp;gt;&amp;gt; n;
		getNum.push_back(n);
	}

	Recur(0, 0);

	for (int i = 1; i &amp;lt; 2000000; i++)//처음부터 시작해서 체크안한 가장 작은 수 출력
	{
		if (!check[i])
		{
			cout &amp;lt;&amp;lt; i;
			break;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>14225</category>
      <category>C++</category>
      <category>백준</category>
      <category>부분수열의 합</category>
      <category>브루트포스</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/213</guid>
      <comments>https://mun-coding.tistory.com/213#entry213comment</comments>
      <pubDate>Tue, 24 Jan 2023 21:11:09 +0900</pubDate>
    </item>
    <item>
      <title>백준 11725 c++ 트리의 부모 찾기</title>
      <link>https://mun-coding.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11725&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/11725&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674473063155&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11725번: 트리의 부모 찾기&quot; data-og-description=&quot;루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11725&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11725&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NVpQR/hyRmZ2OJEj/5FlKzdTQEbAz570N3bQyq1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11725&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11725&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NVpQR/hyRmZ2OJEj/5FlKzdTQEbAz570N3bQyq1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;11725번: 트리의 부모 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 노드의 개수 N (2 &amp;le; N &amp;le; 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로&amp;nbsp;출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1O9Rq/btrWRAebLyo/1BEiYLZHBSviFIj3OmOKeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1O9Rq/btrWRAebLyo/1BEiYLZHBSviFIj3OmOKeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1O9Rq/btrWRAebLyo/1BEiYLZHBSviFIj3OmOKeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1O9Rq%2FbtrWRAebLyo%2F1BEiYLZHBSviFIj3OmOKeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1274&quot; height=&quot;759&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674473987409&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;queue&amp;gt;
using namespace std;

int N;
vector&amp;lt;int&amp;gt; rel[100001];//관련성을 나타내는 배열
int pre[100001];//이전 노드(여기서는 부모 노드)
bool visit[100001];

void bfs(int start)
{
	queue&amp;lt;int&amp;gt; q;
	q.push(start);
	visit[start] = true;
	while (!q.empty())
	{
		int x = q.front();
		q.pop();
		for (int i = 0; i &amp;lt; rel[x].size(); i++)
		{
			if (visit[rel[x][i]])
				continue;
			pre[rel[x][i]] = x;
			visit[rel[x][i]] = true;
			q.push(rel[x][i]);
		}

	}
}

int main()
{
	cin &amp;gt;&amp;gt; N;
	for (int i = 1; i &amp;lt; N; i++)
	{
		int x, y;
		cin &amp;gt;&amp;gt; x &amp;gt;&amp;gt; y;
		rel[x].push_back(y);
		rel[y].push_back(x);
	}
	bfs(1);
	for (int i = 2; i &amp;lt;= N; i++)
	{
		cout &amp;lt;&amp;lt; pre[i] &amp;lt;&amp;lt; '\n';
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준 c++/(1-2)백준 c++ 알고리즘 기초</category>
      <category>11725</category>
      <category>BFS</category>
      <category>C++</category>
      <category>기초</category>
      <category>너비우선탐색</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>트리의 부모 찾기</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/212</guid>
      <comments>https://mun-coding.tistory.com/212#entry212comment</comments>
      <pubDate>Mon, 23 Jan 2023 20:40:16 +0900</pubDate>
    </item>
    <item>
      <title>백준 14888 c++ 연산자 끼워넣기</title>
      <link>https://mun-coding.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14888&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14888&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674180691642&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;14888번: 연산자 끼워넣기&quot; data-og-description=&quot;첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai &amp;le; 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,&amp;nbsp;&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14888&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14888&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cSCzB3/hyRkmEzloh/x6TzOtsQSe8eOisRD0S4S0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14888&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14888&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cSCzB3/hyRkmEzloh/x6TzOtsQSe8eOisRD0S4S0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;14888번: 연산자 끼워넣기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai &amp;le; 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(&amp;times;) 1개, 나눗셈(&amp;divide;) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+2+3-4&amp;times;5&amp;divide;6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식의 계산은 연산자 우선 순위를 무시하고 앞에서부터 진행해야 한다. 또, 나눗셈은 정수 나눗셈으로 몫만 취한다. 음수를 양수로 나눌 때는 C++14의 기준을 따른다. 즉, 양수로 바꾼 뒤 몫을 취하고, 그 몫을 음수로 바꾼 것과 같다.&amp;nbsp;이에 따라서, 위의 식 4개의 결과를 계산해보면 아래와&amp;nbsp;같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+2+3-4&amp;times;5&amp;divide;6 = 1&lt;/li&gt;
&lt;li&gt;1&amp;divide;2+3+4-5&amp;times;6 = 12&lt;/li&gt;
&lt;li&gt;1+2&amp;divide;3&amp;times;4-5+6 = 5&lt;/li&gt;
&lt;li&gt;1&amp;divide;2&amp;times;3-4+5+6 = 7&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 수와 N-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수의 개수 N(2 &amp;le; N &amp;le; 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 &amp;le; Ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,&amp;nbsp;곱셈(&amp;times;)의 개수, 나눗셈(&amp;divide;)의 개수이다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 만들 수 있는 식의 결과의 최댓값을, 둘째 줄에는 최솟값을 출력한다. 연산자를 어떻게 끼워넣어도&amp;nbsp;항상 -10억보다 크거나 같고, 10억보다 작거나 같은 결과가 나오는 입력만 주어진다. 또한, 앞에서부터 계산했을 때, 중간에 계산되는 식의 결과도 항상 -10억보다 크거나 같고, 10억보다 작거나 같다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1449&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL81fG/btrWKzld3wc/SEhozx6wJ95mHD25hHBTs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL81fG/btrWKzld3wc/SEhozx6wJ95mHD25hHBTs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL81fG/btrWKzld3wc/SEhozx6wJ95mHD25hHBTs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL81fG%2FbtrWKzld3wc%2FSEhozx6wJ95mHD25hHBTs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1449&quot; height=&quot;720&quot; data-origin-width=&quot;1449&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674180818317&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;climits&amp;gt;
using namespace std;


int N;
vector&amp;lt;int&amp;gt; input;//숫자 입력 배열
int MAX = INT_MIN;
int MIN = INT_MAX;
int oper[4]; //oper[0] == +
			//oper[1] == -
			//oper[2] == *
			//oper[3] == /
int operArr[10];//dfs다 돌고 oper순서를 담을 배열

void dfs(int count)
{
	if (count == N)
	{
		int result = input[0];
		for (int i = 1; i &amp;lt; N; i++)
		{
			switch (operArr[i])
			{
			case 1:
				result = result + input[i];
				break;
			case 2:
				result = result - input[i];
				break;
			case 3:
				result = result * input[i];
				break;
			case 4:
				result = result / input[i];
				break;

			}
		}
		MAX = max(MAX, result);
		MIN = min(MIN, result);
		return;
	}
	for (int i = 0; i &amp;lt; 4; i++)
	{
    	//만약 해당 연산자가 있다면 
		if (oper[i] &amp;gt; 0)
		{
			operArr[count] = i+1;
			oper[i]--;
			dfs(count + 1);
			oper[i]++;
		}
	}
}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; N;
	for (int i = 0; i &amp;lt; N; i++)
	{
		int getNum;
		cin &amp;gt;&amp;gt; getNum;
		input.push_back(getNum);
	}

	for (int i = 0; i &amp;lt; 4; i++)
	{
		cin &amp;gt;&amp;gt; oper[i];
	}
	dfs(1);
	cout &amp;lt;&amp;lt; MAX &amp;lt;&amp;lt; '\n' &amp;lt;&amp;lt; MIN;

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>14888</category>
      <category>C++</category>
      <category>DFS</category>
      <category>끼워넣기</category>
      <category>백준</category>
      <category>백트래킹</category>
      <category>연산자</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/211</guid>
      <comments>https://mun-coding.tistory.com/211#entry211comment</comments>
      <pubDate>Fri, 20 Jan 2023 11:14:05 +0900</pubDate>
    </item>
    <item>
      <title>백준 1339 c++ 단어 수학</title>
      <link>https://mun-coding.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1339&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1339&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674094430040&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1339번: 단어 수학&quot; data-og-description=&quot;첫째 줄에 단어의 개수 N(1 &amp;le; N &amp;le; 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1339&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1339&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/p0gA2/hyRkhbEeYK/RdL2RTjhtXvHrXp98vrSrk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1339&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1339&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/p0gA2/hyRkhbEeYK/RdL2RTjhtXvHrXp98vrSrk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1339번: 단어 수학&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 단어의 개수 N(1 &amp;le; N &amp;le; 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3,&amp;nbsp;G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 단어의 개수 N(1 &amp;le; N &amp;le; 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 10개이고, 수의 최대 길이는 8이다. 서로 다른 문자는 서로 다른 숫자를 나타낸다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 주어진 단어의 합의 최댓값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmYjwy/btrWHo3XRXE/FwMGlkzMW8lR7oIpl5fMBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmYjwy/btrWHo3XRXE/FwMGlkzMW8lR7oIpl5fMBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmYjwy/btrWHo3XRXE/FwMGlkzMW8lR7oIpl5fMBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmYjwy%2FbtrWHo3XRXE%2FFwMGlkzMW8lR7oIpl5fMBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1446&quot; height=&quot;476&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZHcvy/btrWCF0FKpf/VVme3gSHorcU6RgYMI4tkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZHcvy/btrWCF0FKpf/VVme3gSHorcU6RgYMI4tkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZHcvy/btrWCF0FKpf/VVme3gSHorcU6RgYMI4tkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZHcvy%2FbtrWCF0FKpf%2FVVme3gSHorcU6RgYMI4tkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1444&quot; height=&quot;740&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1674094651173&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int N;
vector&amp;lt;string&amp;gt; input;//문자열 입력 받을 벡터
int alphasize[26];//알파벳이 사용된 자리수
int alphaToInt[26];//해당 알파벳에 부여하는 숫자
bool check[26];//이미 숫자가 부여된 알파벳인지 검사

int findMax()
{
	//알파벳의 자리수 구하기
	for (int i = 0; i &amp;lt; N; i++)
	{
		int k = 1;
        //1의자리부터 돌며 해당 알파벳에 k = 1부터 10씩 곱해지는 자리수를 대입한다.
		for (int j = input[i].size()-1; j&amp;gt;=0 ; j--)
		{
			alphasize[input[i][j] - 'A'] += k;
			k = k*10;
		}
	}
    
	//알파벳에 부여하는 숫자
	int give = 9;
	for (int i = 0; i &amp;lt; 9; i++)
	{
        int tmp = 0;
        //이미 check한 알파벳이면 tmp를 늘린다.
		while (1)
		{
			if (check[tmp])
				tmp++;
			else
				break;
		}
        //모든 알파벳을 돌며 현재 tmp보다 자리수가 큰 알파벳을 찾으면 tmp교체
		for (int j = 1; j &amp;lt; 26; j++)
		{
			if (alphasize[tmp] &amp;lt; alphasize[j])
			{
				if (!check[j])
				{
					tmp = j;
				}
			}
		}
		check[tmp] = true;
		alphaToInt[tmp] = give;
		give--;
	}
	int max = 0;
	
    //자리수에 부여된 숫자를 곱하여 max값을 구한다
	for (int i = 0; i &amp;lt; 26; i++)
	{
		max = max + (alphaToInt[i] * alphasize[i]);
	}

	return max;

}

int main()
{
	//입력
	cin &amp;gt;&amp;gt; N;
	for (int i = 0; i &amp;lt; N; i++)
	{
		string getString;
		cin &amp;gt;&amp;gt; getString;
		input.push_back(getString);
	}

	cout &amp;lt;&amp;lt; findMax();
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준 c++/(2-1)백준 c++ 알고리즘 중급</category>
      <category>1339</category>
      <category>C++</category>
      <category>그리디</category>
      <category>단어수학</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>중급</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/210</guid>
      <comments>https://mun-coding.tistory.com/210#entry210comment</comments>
      <pubDate>Thu, 19 Jan 2023 11:17:59 +0900</pubDate>
    </item>
    <item>
      <title>유니티 Visual Studio 자동완성 안될 때</title>
      <link>https://mun-coding.tistory.com/209</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yxqqc/btrWCehLgv2/BPgAsmoLA8OJHcqlNfSyCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yxqqc/btrWCehLgv2/BPgAsmoLA8OJHcqlNfSyCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yxqqc/btrWCehLgv2/BPgAsmoLA8OJHcqlNfSyCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyxqqc%2FbtrWCehLgv2%2FBPgAsmoLA8OJHcqlNfSyCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;370&quot; height=&quot;778&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1683&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk0rsS/btrWCg0Tpkl/LwgmNx4yAALpnDxoHHykhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk0rsS/btrWCg0Tpkl/LwgmNx4yAALpnDxoHHykhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk0rsS/btrWCg0Tpkl/LwgmNx4yAALpnDxoHHykhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk0rsS%2FbtrWCg0Tpkl%2FLwgmNx4yAALpnDxoHHykhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1683&quot; height=&quot;626&quot; data-origin-width=&quot;1683&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Edit -&amp;gt; Preferences에 들어가서&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1279&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecFCeU/btrWCh6v27a/Bc49y7wFH4kjnTcEDePC90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecFCeU/btrWCh6v27a/Bc49y7wFH4kjnTcEDePC90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecFCeU/btrWCh6v27a/Bc49y7wFH4kjnTcEDePC90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecFCeU%2FbtrWCh6v27a%2FBc49y7wFH4kjnTcEDePC90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1279&quot; height=&quot;183&quot; data-origin-width=&quot;1279&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 부분 에디터를 비주얼 스튜디오로 바꿔주면 된다.&lt;/p&gt;</description>
      <category>비주얼 스튜디오</category>
      <category>유니티</category>
      <category>자동완성</category>
      <author>현구구</author>
      <guid isPermaLink="true">https://mun-coding.tistory.com/209</guid>
      <comments>https://mun-coding.tistory.com/209#entry209comment</comments>
      <pubDate>Wed, 18 Jan 2023 19:54:32 +0900</pubDate>
    </item>
  </channel>
</rss>