<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Deff_Dev</title>
    <link>https://deff-dev.tistory.com/</link>
    <description>꾸준히 공부하는 개발자 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Sun, 14 Jun 2026 11:42:08 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Deff_a</managingEditor>
    <image>
      <title>Deff_Dev</title>
      <url>https://tistory1.daumcdn.net/tistory/6707001/attach/ac442f0c5e364ed7a445f371c4327c3f</url>
      <link>https://deff-dev.tistory.com</link>
    </image>
    <item>
      <title>[백준] 11508번 2+1 세일 (C++)</title>
      <link>https://deff-dev.tistory.com/273</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFbT7N/btsMfqZWswh/cHg4jkjE7zQP4gCRJDb3kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFbT7N/btsMfqZWswh/cHg4jkjE7zQP4gCRJDb3kk/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/11508&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFbT7N/btsMfqZWswh/cHg4jkjE7zQP4gCRJDb3kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFbT7N%2FbtsMfqZWswh%2FcHg4jkjE7zQP4gCRJDb3kk%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;876&quot; height=&quot;167&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/11508&lt;/figcaption&gt;
&lt;/figure&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 문제는 제목 그대로 물건을 3개 샀을 때, 해당 묶음에서 가장 싼 제품을 무료로 줄 때, 최소 비용을 출력하는 문제이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;최소 비용을 만들기 위해서는 가장 비싼 제품을 무료로 받으면 된다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;가장 비싼 제품을 무료로 받기 위해서는 내림차순 정렬을 이용하여 3개씩 구매하면 무료로 받을 수 있는 가장 비싼 제품들을 고를 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1739365144015&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

bool cmp (int a, int b)
{
	return a &amp;gt; b;
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int n;
	cin &amp;gt;&amp;gt; n;

	vector&amp;lt;int&amp;gt; v(n);
	for (int i = 0; i &amp;lt; n; i++)
	{
		cin &amp;gt;&amp;gt; v[i];
	}

	sort(v.begin(), v.end(), cmp);
	int count = 0, sum = 0;
	for(int i = 0; i &amp;lt; n; i++)
	{
		if(count &amp;lt; 2)
		{
			sum += v[i];
			count++;
		}
		else
		{
			count = 0;
		}
	}

	cout &amp;lt;&amp;lt; sum;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>2+1 세일 c++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/273</guid>
      <comments>https://deff-dev.tistory.com/273#entry273comment</comments>
      <pubDate>Wed, 12 Feb 2025 21:59:24 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1629번 곱셈 (C++)</title>
      <link>https://deff-dev.tistory.com/272</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F58AT/btsL3AV9t9V/Az29tHsFnk3n0AnIZ5cdH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F58AT/btsL3AV9t9V/Az29tHsFnk3n0AnIZ5cdH0/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/1629&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F58AT/btsL3AV9t9V/Az29tHsFnk3n0AnIZ5cdH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF58AT%2FbtsL3AV9t9V%2FAz29tHsFnk3n0AnIZ5cdH0%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;1052&quot; height=&quot;240&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/1629&lt;/figcaption&gt;
&lt;/figure&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;자연수 A를 B번 곱한 수를 C로 나눈 나머지 값을 구하는 문제이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;최대 연산 횟수는 약 21억이기 때문에, B번을 다 곱하면 시간 초과가 나온다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;그렇기 때문에 분할 정복을 이용해서 풀이해야한다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;예를들어서 입력이 2 8 5 일 때,&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2를 8번 곱해서 256이 나오고 5를 나눈 나머지인 1이 출력될 것 이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 256&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;하지만 이 연산에도 규칙이 있다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;(((2^2)^2)^2)&lt;/span&gt;처럼 제곱을 이용하면 8번해야하는 연산을 3번으로 줄일 수 있다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;왜 그럴까 ?&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;위 식을 계산해보면 아래와 같다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2^2 = 4&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;4^2 = 16&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;16^2 = 256&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 규칙을 적용해서 문제를 풀어봤다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738544709638&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

long long a, b, c;

long long Solve(long long a, long long b, long long c)
{
	if(b == 0) return 1; 

	long long num = Solve(a, b / 2, c);
	num = num * num % c;
	
	if(b % 2 == 0) return num; // b가 짝수일 때
	return num * a % c; // b가 홀수라면 a를 곱한다. 
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; c;

	cout &amp;lt;&amp;lt; Solve(a,b,c);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>1629번 곱셈 c++</category>
      <category>곱셈 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/272</guid>
      <comments>https://deff-dev.tistory.com/272#entry272comment</comments>
      <pubDate>Mon, 3 Feb 2025 10:31:55 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2206번 벽 부수고 이동하기 (C++)</title>
      <link>https://deff-dev.tistory.com/271</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnhUDH/btsLWN1RXiZ/IHrYCpChVNc19c53wCzFfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnhUDH/btsLWN1RXiZ/IHrYCpChVNc19c53wCzFfk/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/2206&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnhUDH/btsLWN1RXiZ/IHrYCpChVNc19c53wCzFfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnhUDH%2FbtsLWN1RXiZ%2FIHrYCpChVNc19c53wCzFfk%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;873&quot; height=&quot;152&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/2206&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 문제는 (0,0) 에서 (n -1 , m - 1) 위치로 가야할 때, 단 한 번 벽을 뚫고 갈 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이때, 최단 거리를 출력하는 문제이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;BFS를 이용하여 해당 문제를 풀이했다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3차원 배열을 이용하여 [y 축][x 축][벽 파괴 유무]로 맵을 만들었다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이를 BFS를 이용하여 (n - 1, m - 1)까지의 최단거리를 구했다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1737607001980&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int arr[1000][1000][2];
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
int n, m;

int BFS()
{
	queue&amp;lt;pair&amp;lt;pair&amp;lt;int, int&amp;gt;, int&amp;gt;&amp;gt; q;
	q.push({{0, 0}, 0});
	arr[0][0][0] = arr[0][0][1] = 1;
	
	while(!q.empty())
	{
		int  curX = q.front().first.second;
		int  curY = q.front().first.first;
		bool broken = q.front().second;
		if(curY == n- 1 &amp;amp;&amp;amp; curX == m -1)
			return arr[curY][curX][broken];
		q.pop();

		for(int i = 0; i &amp;lt; 4; i++)
		{
			int moveX = curX + dx[i];
			int moveY = curY + dy[i];
			if(moveX &amp;lt; 0 || moveX &amp;gt;= m || moveY &amp;lt; 0 || moveY &amp;gt;= n) continue;
			
			if(!broken &amp;amp;&amp;amp; arr[moveY][moveX][broken] == -1) // 벽을 부술 때
			{
				arr[moveY][moveX][!broken] = arr[curY][curX][broken] + 1;
				q.push({{moveY, moveX}, !broken});
				continue;
			}

			// 부수지 않고 갈 때
			if(arr[moveY][moveX][broken] == 0 || arr[curY][curX][broken] + 1 &amp;lt; arr[moveY][moveX][broken]) 
			{
				arr[moveY][moveX][broken] = arr[curY][curX][broken] + 1;
				q.push({{moveY, moveX}, broken});
			}
		}
	}
	
	return -1;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	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++)
		{
			char input;
			cin &amp;gt;&amp;gt; input;
			arr[i][j][0] = input - '0';
			if(arr[i][j][0] == 1)
				arr[i][j][0] = arr[i][j][1] = -1;
		}
	}

	cout &amp;lt;&amp;lt; BFS();

	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>벽 부수고 이동하기 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/271</guid>
      <comments>https://deff-dev.tistory.com/271#entry271comment</comments>
      <pubDate>Thu, 23 Jan 2025 13:45:19 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 5427번 불 (C++)</title>
      <link>https://deff-dev.tistory.com/270</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duOFfv/btsLP2ZQgME/4Vbr5W7Zw33c4gyhUnCqHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duOFfv/btsLP2ZQgME/4Vbr5W7Zw33c4gyhUnCqHK/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/5427&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duOFfv/btsLP2ZQgME/4Vbr5W7Zw33c4gyhUnCqHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduOFfv%2FbtsLP2ZQgME%2F4Vbr5W7Zw33c4gyhUnCqHK%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;877&quot; height=&quot;180&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/5427&lt;/figcaption&gt;
&lt;/figure&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;w * h 크기의 건물에 불이 났을 때, 상근이가 얼마나 빨리 탈출할 수 있는지 출력하는 문제이다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;입력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;'.': 빈 공간&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;'#': 벽&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;'@': 상근이의 시작 위치&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;'*': 불&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;입력을 받을 때, 상근이의 시작위치, 불 위치는 각각의 큐에 저장하고, 탈출 지점 좌표를 벡터에 저장한다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이후, 각각의 큐를 바탕으로 BFS를 진행하고, 각각의 map 정보를 저장한다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;탈출 지점 좌표를 탐색하여, 불 위치를 BFS한 맵, 상근이 위치를 BFS한 맵의 값을 비교하고 상근이 위치를 BFS한 맵의 탈출 지점 값이 더 작다면 최솟값을 비교한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1737092999798&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

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

vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; BFS(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; map, queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; q)
{
	while(!q.empty())
	{
		int y = q.front().first;
		int x = q.front().second;
		q.pop();

		for(int i = 0; i &amp;lt; 4; i++)
		{
			int moveX = x + dx[i];
			int moveY = y + dy[i];

			if(moveX &amp;lt; 0 || moveX &amp;gt;= w || moveY &amp;lt; 0 || moveY &amp;gt;= h) continue;

			if(map[moveY][moveX] == 0 || map[y][x] + 1 &amp;lt; map[moveY][moveX])
			{
				map[moveY][moveX] = map[y][x] + 1;

				q.push({moveY, moveX});
			}
		}
	}

	return map;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin &amp;gt;&amp;gt; n;
	for(int i = 0; i &amp;lt; n; i++)
	{
		cin &amp;gt;&amp;gt; w &amp;gt;&amp;gt; h;
		vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;    map(h, vector&amp;lt;int&amp;gt;(w));
		queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;  fireQ;
		queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;  playerQ;
		vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; exit;
		for(int j = 0; j &amp;lt; h; j++)
		{
			for(int k = 0; k &amp;lt; w; k++)
			{
				char c;
				cin &amp;gt;&amp;gt; c;
				if(c == '.')
				{
					map[j][k] = 0;
					if(j == 0 || j == h - 1 || k == 0 || k == w - 1)
						exit.push_back({j, k});
				}
				else if(c == '#') map[j][k] = -2;
				else if(c == '@')
				{
					if(!(j == 0 || j == h - 1 || k == 0 || k == w - 1))
						playerQ.push({j, k});
				}
				else
				{
					fireQ.push({j, k});
					map[j][k] = - 1;
				}
			}
		}

		if(playerQ.empty()) // 바로 탈출이 가능하다면
		{
			cout &amp;lt;&amp;lt; 1 &amp;lt;&amp;lt;&quot;\n&quot;;
			continue;
		}
		vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; playerMap = BFS(map, playerQ);
		vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; fireMap = BFS(map, fireQ);
		
		int minCount = 987654321;
		for(int j = 0; j &amp;lt; exit.size(); j++)
		{
			int y = exit[j].first;
			int x = exit[j].second;
			if(playerMap[y][x] &amp;gt; 0 &amp;amp;&amp;amp; (playerMap[y][x] &amp;lt; fireMap[y][x] + 1 || fireMap[y][x] == 0) )
			{
				minCount = min(minCount, playerMap[y][x]);
			}
		}

		if(minCount == 987654321)
			cout &amp;lt;&amp;lt; &quot;IMPOSSIBLE\n&quot;;
		else
			cout &amp;lt;&amp;lt; minCount + 1&amp;lt;&amp;lt; &quot;\n&quot;;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>5427번 불 c++</category>
      <category>불 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/270</guid>
      <comments>https://deff-dev.tistory.com/270#entry270comment</comments>
      <pubDate>Fri, 17 Jan 2025 15:24:36 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 7569번 토마토 (C++)</title>
      <link>https://deff-dev.tistory.com/269</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z0fNg/btsLPz9EdVe/KKAIFm5Tdxc5sDgSn8DTM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z0fNg/btsLPz9EdVe/KKAIFm5Tdxc5sDgSn8DTM1/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/7569&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z0fNg/btsLPz9EdVe/KKAIFm5Tdxc5sDgSn8DTM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz0fNg%2FbtsLPz9EdVe%2FKKAIFm5Tdxc5sDgSn8DTM1%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;881&quot; height=&quot;131&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/7569&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcqgeZ/btsLNWkZ0fJ/CWZ0VI9FNeeKziTmsAcTZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcqgeZ/btsLNWkZ0fJ/CWZ0VI9FNeeKziTmsAcTZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcqgeZ/btsLNWkZ0fJ/CWZ0VI9FNeeKziTmsAcTZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcqgeZ%2FbtsLNWkZ0fJ%2FCWZ0VI9FNeeKziTmsAcTZ1%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;223&quot; height=&quot;221&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;M * N * H로 이루어진 박스에 토마토들이 담겨 있는데, 익은 토마토가 되기 위해서는 안 익은 토마토 근처에 익은 토마토가 있을 때, 하루가 지나면 익은 토마토가 된다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;박스에 모든 토마토가 익은 토마토가 될려면 며칠이 지나야하는지 출력하는 문제이다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;입력 조건은 -1(토마토가 없는 박스), 0(안익은 토마토), 1(익은 토마토)이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3차원 배열에 박스 정보를 입력받고, 익은 토마토 좌표를 큐에 저장한 뒤, BFS를 이용하여 날짜를 계산했다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;큐가 비었을 때 BFS가 끝나므로 출력할 땐, count - 1를 한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736991043900&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int dx[6] = {0, 0, 1, -1,0,0 };
int dz[6] = {1, -1, 0, 0,0,0};
int dy[6] = {0, 0 , 0 , 0 , 1, -1};
int n, m, h;
int arr[100][100][100];
queue&amp;lt;pair&amp;lt;pair&amp;lt;int,int&amp;gt;, int&amp;gt;&amp;gt; q;

void BFS()
{
	int count = 0;
	while (!q.empty())
	{
		int size = q.size();
		for(int k = 0; k &amp;lt; size; k++)
		{
			int x = q.front().first.second, z = q.front().first.first,  y = q.front().second;
			q.pop();

			for(int i = 0; i &amp;lt; 6; i++)
			{
				int moveX = x + dx[i], moveZ = z + dz[i], moveY = y + dy[i];
				if(moveX &amp;lt; 0 || moveX &amp;gt;= m || moveZ &amp;lt; 0 || moveZ &amp;gt;= n || moveY &amp;lt; 0 || moveY &amp;gt;= h) continue;

				if(arr[moveZ][moveX][moveY] == 0)
				{
					arr[moveZ][moveX][moveY] = 1;
					q.push({{moveZ, moveX}, moveY});
				}
			}
		}
		count ++;
	}

	for(int k = 0; k &amp;lt; h; k++)
		for(int i = 0; i &amp;lt; n; i++)
			for(int j = 0; j &amp;lt; m; j++)
			{
				if(arr[i][j][k] == 0)
				{
					cout &amp;lt;&amp;lt; -1;
					return;
				}
			}

	cout &amp;lt;&amp;lt; count - 1;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin &amp;gt;&amp;gt; m &amp;gt;&amp;gt; n &amp;gt;&amp;gt; h;

	bool b = false;
	for(int k = 0; k &amp;lt; h; k++)
		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][k];

				if(arr[i][j][k] == 0)
					b = true;
				else if(arr[i][j][k] == 1)
					q.push({{i, j}, k});
			}

	if(!b)
		cout &amp;lt;&amp;lt; 0;
	else
		BFS();
		
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>토마토 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/269</guid>
      <comments>https://deff-dev.tistory.com/269#entry269comment</comments>
      <pubDate>Thu, 16 Jan 2025 11:10:31 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 10026번 적록색약 (C++)</title>
      <link>https://deff-dev.tistory.com/268</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u5NZc/btsLPkY87op/MGsy9CHiRDAlYIU8nwq1Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u5NZc/btsLPkY87op/MGsy9CHiRDAlYIU8nwq1Kk/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/10026&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u5NZc/btsLPkY87op/MGsy9CHiRDAlYIU8nwq1Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu5NZc%2FbtsLPkY87op%2FMGsy9CHiRDAlYIU8nwq1Kk%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;908&quot; height=&quot;140&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/10026&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;n * n 크기의 R, G, B로이루어진 그림의 구역 수를 구하는 문제이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이때, 적록색약 유무에 따른 그림 영역의 갯수를 출력하면 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;적록 색약이 있는 사람은 R, G의 구분을 못한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;ex) 적록 색약 X ▶ R (1), G(1), B(1) = 3개,&amp;nbsp; 적록 색약 O ▶ RG(1), B(1) = 2개&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;일반적인 그림이 담겨있는 2차원 벡터와 적록색약을 가진 사람이 보는 그림이 담긴 2차원 벡터 2개를 만들고,&amp;nbsp; 이를 BFS를 이용하여 탐색했다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736986205100&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

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

void BFS(pair&amp;lt;int, int&amp;gt; startPoint,vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; &amp;amp;arr,bool visited[101][101])
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt; &amp;gt; q;
	q.push(startPoint);
	visited[startPoint.first][startPoint.second] = true;

	int target = arr[startPoint.first][startPoint.second], count = 1;
	while(!q.empty())
	{
		pair&amp;lt;int, int&amp;gt; p = q.front();
		q.pop();

		for(int i = 0; i &amp;lt; 4; i++)
		{
			int moveY = p.first + dy[i];
			int moveX = p.second + dx[i];

			if(moveY &amp;lt; 0 || moveX &amp;lt; 0 || moveY &amp;gt;= n || moveX &amp;gt;= n)
				continue;

			if(!visited[moveY][moveX] &amp;amp;&amp;amp; arr[moveY][moveX] == target)
			{
				q.push({moveY, moveX});
				visited[moveY][moveX] = true;
			}
		}
	}
}

void Search(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; &amp;amp;arr)
{
	bool visited[101][101] = {false, };
	int count = 0 ;
	
	for(int i = 0; i &amp;lt; n; i++)
	{
		for(int j = 0; j &amp;lt; n; j++)
		{
			if(!visited[i][j])
			{
				BFS({i,j}, arr,visited);
				count++;
			}
		}
	}
	cout &amp;lt;&amp;lt; count &amp;lt;&amp;lt; &quot; &quot;;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	cin &amp;gt;&amp;gt; n;
	vector&amp;lt;vector&amp;lt;int&amp;gt; &amp;gt; arr01(n, vector&amp;lt;int&amp;gt;(n));
	vector&amp;lt;vector&amp;lt;int&amp;gt; &amp;gt; arr02(n, vector&amp;lt;int&amp;gt;(n));
	for(int i = 0; i &amp;lt; n; i++)
	{
		string input;
		cin &amp;gt;&amp;gt; input;
		for(int j = 0; j &amp;lt; input.length(); j++)
		{
			if(input[j] == 'R')
			{
				arr01[i][j] = arr02[i][j] = 1;
			}
			else if(input[j] == 'G')
			{
				arr02[i][j] = 1;
				arr01[i][j] = 2;
			}
			else
			{
				arr01[i][j] = arr02[i][j] = 3;
			}
		}
	}

	Search(arr01);
	Search(arr02);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>적록색약 c++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/268</guid>
      <comments>https://deff-dev.tistory.com/268#entry268comment</comments>
      <pubDate>Thu, 16 Jan 2025 09:16:51 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1926번 그림 (C++)</title>
      <link>https://deff-dev.tistory.com/267</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnTPHX/btsLN3CsHQx/iWjGRpvHtkwKSUaoHbyCxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnTPHX/btsLN3CsHQx/iWjGRpvHtkwKSUaoHbyCxk/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/1926&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnTPHX/btsLN3CsHQx/iWjGRpvHtkwKSUaoHbyCxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnTPHX%2FbtsLN3CsHQx%2FiWjGRpvHtkwKSUaoHbyCxk%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;890&quot; height=&quot;170&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/1926&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;간단한 BFS 문제로, BFS이용하여 그림 영역과 넓이를 구한 뒤, 출력했다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736835876837&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int n, m, pictureCount = 0 ,maxWidth = 0;
int arr[500][500] = {0 ,};
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
bool visited[500][500] = {false, };

void BFS(pair&amp;lt;int, int&amp;gt; startPoint)
{
	queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; q;
	q.push(startPoint);
	visited[startPoint.first][startPoint.second] = true;

	int count = 1;
	while (!q.empty())
	{
		pair&amp;lt;int, int&amp;gt; point = q.front();
		q.pop();

		for (int i = 0; i &amp;lt; 4; i++)
		{
			int moveY = point.first + dy[i];
			int moveX = point.second + dx[i];

			if(moveX &amp;lt; 0 || moveX &amp;gt;= m || moveY &amp;lt; 0 || moveY &amp;gt;= n)
				continue;;

			if(arr[moveY][moveX] == 1 &amp;amp;&amp;amp; !visited[moveY][moveX])
			{
				q.push({moveY, moveX});
				visited[moveY][moveX] = true;
				count++;
			}
		}
	}
	
	pictureCount++;
	maxWidth = max(count, maxWidth);
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	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++)
			if(arr[i][j] == 1 &amp;amp;&amp;amp; !visited[i][j])
				BFS({i, j});

	cout &amp;lt;&amp;lt; pictureCount &amp;lt;&amp;lt; &quot;\n&quot; &amp;lt;&amp;lt; maxWidth;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>그림 c++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/267</guid>
      <comments>https://deff-dev.tistory.com/267#entry267comment</comments>
      <pubDate>Tue, 14 Jan 2025 15:28:58 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2504번 괄호의 값 (C++)</title>
      <link>https://deff-dev.tistory.com/266</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be15JH/btsLKGIvR9E/izdtoOykUK1kiIyPXAsv90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be15JH/btsLKGIvR9E/izdtoOykUK1kiIyPXAsv90/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/2504&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be15JH/btsLKGIvR9E/izdtoOykUK1kiIyPXAsv90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe15JH%2FbtsLKGIvR9E%2FizdtoOykUK1kiIyPXAsv90%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;893&quot; height=&quot;159&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/2504&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 문제는 아래의 규칙에 따라 ( , ) , [ , ] 로 이루어진 입력의 결과 값을 출력하는 문제이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;규칙&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;'()&amp;rsquo; 인 괄호열의 값은 2이다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;lsquo;[]&amp;rsquo; 인 괄호열의 값은 3이다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;lsquo;(X)&amp;rsquo; 의 괄호값은 2&amp;times;값(X) 으로 계산된다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;lsquo;[X]&amp;rsquo; 의 괄호값은 3&amp;times;값(X) 으로 계산된다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;올바른 괄호열&amp;nbsp;X와&amp;nbsp;Y가 결합된&amp;nbsp;XY의 괄호값은 값(XY)= 값(X)+값(Y) 로 계산된다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이때, 올바르지 않은 괄호열일 경우 반드시 0을 출력한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 문제를 실제 수식 연산처럼 풀이하기엔 괄호가 겹쳐있거나 했을 때, 변수가 많아 어려웠다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;ex) &quot;(()[[]])([])&quot; ▶ 2 * (2 + 3 * 3) + 2 * 3 = 28&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;그래서 실제 연산이 아닌 분배 법칙을 이용하여 이 문제를 풀이했다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;위 식을 분배 법칙으로 바꿔본다면 (2 * 2 +&amp;nbsp; 6 * 3) + 2 * 3 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;▶ 4 + 18 + 6 = 28 이므로 원하는 답이 나오게 된다.&lt;/span&gt;&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이를 스택을 이용하여 풀이해봤다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736740359391&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int GetClose(char top, char push)
{
	if(top == '(' &amp;amp;&amp;amp; push == ')') return 2;
	if(top == '[' &amp;amp;&amp;amp; push == ']') return 3;
	return -1;
}
int GetOpen(char push)
{
	if(push == '(') return 2;
	return 3;
}
bool IsPlus(char prev, char cur)
{
	return  (prev == '(' &amp;amp;&amp;amp; cur == ')') || (prev == '[' &amp;amp;&amp;amp; cur == ']');
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	string input;
	cin &amp;gt;&amp;gt; input;

	stack&amp;lt;char&amp;gt; stack;
	stack.push('0');
	int sum = 0, num = 1;
	for(int i = 0; i &amp;lt; input.length(); i++)
	{
		char c = input[i];
		if(c == '(' || c == '[')
		{
			num *= GetOpen(c);
			stack.push(c);
		}
		else
		{
			int val = GetClose(stack.top(), c);
			if(val == -1)
			{
				cout &amp;lt;&amp;lt; 0;
				return  0;
			}
			if(IsPlus(input[i -1], c)) sum += num;
			num /= val;
			stack.pop();
		}
	}

	sum = stack.size() != 1 ? 0 : sum;
	cout &amp;lt;&amp;lt; sum;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>괄호의 값 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/266</guid>
      <comments>https://deff-dev.tistory.com/266#entry266comment</comments>
      <pubDate>Mon, 13 Jan 2025 12:53:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 10799번 쇠막대기 (C++)</title>
      <link>https://deff-dev.tistory.com/265</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcSonj/btsLH8SIkk7/PvwtxxeWA9KXjSpHEBKoU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcSonj/btsLH8SIkk7/PvwtxxeWA9KXjSpHEBKoU1/img.png&quot; data-alt=&quot;https://www.acmicpc.net/problem/10799&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcSonj/btsLH8SIkk7/PvwtxxeWA9KXjSpHEBKoU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcSonj%2FbtsLH8SIkk7%2FPvwtxxeWA9KXjSpHEBKoU1%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;814&quot; height=&quot;158&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.acmicpc.net/problem/10799&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이 문제는 쇠막대기를 레이저로 자를 떄, 몇 개의 막대기가 나오는지 출력하는 문제이다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;입력은&amp;nbsp; &amp;nbsp;' ( ' , ' ) ' 두 가지이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;' ( ' 뒤에 바로 ' ) '가 온다면 해당 자리에 레이저를 쏜다는 것이고, 이외의 입력은 막대기를 의미한다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;ex) &quot;(())&quot; 입력은 ㅡ ㅡ 처럼 막대기 2개가 나온다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tRwjK/btsLIlK3ars/CQ6hul9ZXNTkBpqP1PyNr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tRwjK/btsLIlK3ars/CQ6hul9ZXNTkBpqP1PyNr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tRwjK/btsLIlK3ars/CQ6hul9ZXNTkBpqP1PyNr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtRwjK%2FbtsLIlK3ars%2FCQ6hul9ZXNTkBpqP1PyNr1%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;590&quot; height=&quot;319&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;예제의 입력을 본다면 위 그림과 같이 17개의 막대기가 나온다.&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;스택을 이용하여 풀이했고 입력을 받은 뒤, 입력된 문자열을 탐색하면서 레이저를 감별하고 막대기를 자른다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;' ( ' 이라면 bar 갯수를 + 1 한 뒤, 스택에 푸시한다. (flag 변수 true)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;' ) '이라면 &lt;span style=&quot;color: #ef5369;&quot;&gt;막대기 끝 or 레이저&lt;/span&gt;이기 때문에 bar 갯수를 - 1 한다.&lt;/b&gt;&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;flag 변수가 true&lt;/span&gt;일 때는 레이저이기 때문에 현재 bar 갯수를 sum에 더한 뒤, flag 변수를 false로 바꾼다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;flag 변수가 false&lt;/span&gt;일 때는 막대기가 끝난 것이므로 sum + 1 한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;스택에서 ' ( ' 를 팝한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1736411449592&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	string input;
	cin &amp;gt;&amp;gt; input;

	int sum = 0, bar = 0;
	bool flag = false;
	stack&amp;lt;char&amp;gt; stack;
	
	for(int i = 0; i &amp;lt; input.length(); i++)
	{
		char c = input[i];
		if(c == '(')
		{
			bar ++;
			stack.push(c);
			flag = true;
		}
		else
		{
			bar--;
			if(flag) // 레이저일 때
			{
				sum += bar;
				flag = false;
			}
			else sum += 1;
			
			stack.pop();
		}
	}

	cout &amp;lt;&amp;lt; sum ;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/백준</category>
      <category>쇠막대기 C++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/265</guid>
      <comments>https://deff-dev.tistory.com/265#entry265comment</comments>
      <pubDate>Thu, 9 Jan 2025 17:48:01 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 4949번 균형잡힌 세상 (C++)</title>
      <link>https://deff-dev.tistory.com/264</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHtZ94/btsLEsxqsWj/DR1mLfoU3ptCJKNCBuJSy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHtZ94/btsLEsxqsWj/DR1mLfoU3ptCJKNCBuJSy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHtZ94/btsLEsxqsWj/DR1mLfoU3ptCJKNCBuJSy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHtZ94%2FbtsLEsxqsWj%2FDR1mLfoU3ptCJKNCBuJSy1%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;790&quot; height=&quot;137&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;getline 함수를 이용하여, 공백을 포함하여 입력을 받은 뒤, Stack을 이용하여 균형잡인 문자열인지 판단했다.&lt;/b&gt;&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이때, stack에 임의 값 '0'를 삽입(empty 처리를 피하기 위해)하고 모든 연산이 끝난 뒤, stack의 크기가 1일 경우에 yes, 아니라면 no를 출력한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736214393560&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	while(true)
	{
		string input;
		getline(cin, input);
		if(input == &quot;.&quot;)
			break;

		stack&amp;lt;char&amp;gt; stack;
		stack.push('0');
		
		for(int i = 0; i &amp;lt; input.length(); i++)
		{
			char c = input[i];
			if(!(c == '(' || c == ')' || c == '[' || c == ']')) continue;
			
			if((c == ')' &amp;amp;&amp;amp; stack.top() == '(') || (c == ']' &amp;amp;&amp;amp; stack.top() == '[')){
				stack.pop();
			}
			else
			{
				stack.push(c);
			}
		}
		
		string output = stack.size() == 1 ? &quot;yes\n&quot; : &quot;no\n&quot;;
		cout &amp;lt;&amp;lt; output;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트/백준</category>
      <category>균형잡힌 세상 c++</category>
      <author>Deff_a</author>
      <guid isPermaLink="true">https://deff-dev.tistory.com/264</guid>
      <comments>https://deff-dev.tistory.com/264#entry264comment</comments>
      <pubDate>Tue, 7 Jan 2025 11:30:43 +0900</pubDate>
    </item>
  </channel>
</rss>