<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부공간</title>
    <link>https://algorithmstudy-mju.tistory.com/</link>
    <description>공부하는 자료를 정리해놓는 공간입니다 ^-^ 문의 있으면 언제든지 댓글 달아주세요</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 15:20:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개발자가될수있을까?</managingEditor>
    <image>
      <title>공부공간</title>
      <url>https://tistory1.daumcdn.net/tistory/3476739/attach/9f285d0869e64f8a83348ead30c989e5</url>
      <link>https://algorithmstudy-mju.tistory.com</link>
    </image>
    <item>
      <title>BOJ - 25307 ) 시루의 백화점 구경</title>
      <link>https://algorithmstudy-mju.tistory.com/242</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;849&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zpg4F/btrF0s9LHQi/zZnx7jjt1S9k0t3cOK86X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zpg4F/btrF0s9LHQi/zZnx7jjt1S9k0t3cOK86X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zpg4F/btrF0s9LHQi/zZnx7jjt1S9k0t3cOK86X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZpg4F%2FbtrF0s9LHQi%2FzZnx7jjt1S9k0t3cOK86X0%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;1619&quot; height=&quot;849&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;849&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;1590&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmBrFh/btrFY7r2aS9/JtAQ2FW01kv6G0PdZI2UMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmBrFh/btrFY7r2aS9/JtAQ2FW01kv6G0PdZI2UMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmBrFh/btrFY7r2aS9/JtAQ2FW01kv6G0PdZI2UMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmBrFh%2FbtrFY7r2aS9%2FJtAQ2FW01kv6G0PdZI2UMk%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;1590&quot; height=&quot;516&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;516&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;1617&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VJrSe/btrFZkEFJfI/O8FGj3E9ATFPUDoeMfOfY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VJrSe/btrFZkEFJfI/O8FGj3E9ATFPUDoeMfOfY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VJrSe/btrFZkEFJfI/O8FGj3E9ATFPUDoeMfOfY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVJrSe%2FbtrFZkEFJfI%2FO8FGj3E9ATFPUDoeMfOfY1%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;1617&quot; height=&quot;739&quot; data-origin-width=&quot;1617&quot; data-origin-height=&quot;739&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;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/25307&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/25307&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656424249448&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;25307번: 시루의 백화점 구경&quot; data-og-description=&quot;첫째 줄에 백화점의 세로 길이, 가로 길이, 마네킹과 떨어져야 하는 거리를 의미하는 정수 $N, M, K$가 공백으로 구분되어 주어진다. ($1 \leq N,M&amp;nbsp;\leq 2\,000$, $0 \leq K \leq 4\,000$) 둘째 줄부터 $N$개의 줄&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/25307&quot; data-og-url=&quot;https://www.acmicpc.net/problem/25307&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KUqM5/hyOUZLnd6N/KZn34tP3Mf6xQykv7eMAXk/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/25307&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/25307&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KUqM5/hyOUZLnd6N/KZn34tP3Mf6xQykv7eMAXk/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;25307번: 시루의 백화점 구경&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 백화점의 세로 길이, 가로 길이, 마네킹과 떨어져야 하는 거리를 의미하는 정수 $N, M, K$가 공백으로 구분되어 주어진다. ($1 \leq N,M&amp;nbsp;\leq 2\,000$, $0 \leq K \leq 4\,000$) 둘째 줄부터 $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;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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;첫 시작점으로 부터 목적지(2) 까지 갈 수 있는지 확인한다 (bfs)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;탐색전 마네킹거리(K, 마네킹 좌표에서 bfs로 k번이동하여 갈수있는곳)를 불가능 표시를 해두고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한번만 BFS를 진행하면 해결된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class BOJ_25307 {
	
	
	public static boolean inRange(int yy, int xx, int n , int m) {return yy&amp;lt;n&amp;amp;&amp;amp;xx&amp;lt;m&amp;amp;&amp;amp;yy&amp;gt;=0&amp;amp;&amp;amp;xx&amp;gt;=0;}
	
	public static void main(String[] args) throws IOException {

			
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		

		ArrayDeque&amp;lt;int[]&amp;gt; dq = new ArrayDeque&amp;lt;&amp;gt;();
		ArrayList&amp;lt;int[]&amp;gt; node = new ArrayList&amp;lt;&amp;gt;();
		
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		

		int dir[][] = {{1,0},{-1,0},{0,1},{0,-1}};
 		int map[][] = new int[n][m];
		int sx= 0;
		int sy= 0;
		int ex= -987654321;
		int ey= -987654321;
		
		for(int i=0;i&amp;lt;n;++i) {
			st = new StringTokenizer(br.readLine());
			for(int j=0;j&amp;lt;m;++j) {
				map[i][j] = Integer.parseInt(st.nextToken());
				if(map[i][j] ==4) {sx=j;sy=i;} 
				if(map[i][j] ==2) {ex=j;ey=i;} 
				if(map[i][j] ==3) {node.add(new int[] {i,j});
				} 
			}
		}
		
		
		int size = node.size();
	
		for(int aa=0;aa&amp;lt;size;aa++) {
		    int i = node.get(aa)[0];
		    int j = node.get(aa)[1];
			
			dq.add(new int[] {i,j});
			map[i][j]=1;
			
			while(!dq.isEmpty()) {
				
				int now[] =dq.poll();
					for(int a=0;a&amp;lt;4;a++) {
						int nexty=now[0]+dir[a][0];
						int nextx=now[1]+dir[a][1];
						if(inRange(nexty,nextx,n,m)&amp;amp;&amp;amp;map[nexty][nextx]!=1&amp;amp;&amp;amp;dist(nexty,nextx,i,j,k)) {
							map[nexty][nextx]=1;
							dq.add(new int[] {nexty,nextx});
						}
					}
			}
		}
		
		
		
        int answer= 987654321;
		
		dq.add(new int[] {sy,sx,0});
		map[sy][sx] = 5; 
		
		top:
		while(!dq.isEmpty()) {
			int now[] = dq.poll();
			for(int a=0;a&amp;lt;4;a++) {
				
				int nexty=now[0]+dir[a][0];
				int nextx=now[1]+dir[a][1];
				
				if(inRange(nexty,nextx,n,m)
						&amp;amp;&amp;amp;map[nexty][nextx]&amp;lt;5
						  &amp;amp;&amp;amp;map[nexty][nextx]!=1
						     ) {
					
					if(map[nexty][nextx]==2) {
						answer = answer &amp;gt; now[2]+1 ? now[2]+1 : answer;
						break top;
				    }
					dq.add(new int[] {nexty,nextx,now[2]+1});
					map[nexty][nextx]=5;
				}
			}
		}
		
		System.out.println( answer==987654321 ? -1 : answer );

	
		
		
	}

	private static boolean dist(int nexty, int nextx, int i, int j, int k) {
		
		return (Math.abs(nextx-j)+Math.abs(nexty-i)) &amp;lt;=k;
	}

	
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1623&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b604a0/btrF1B6dWzh/csKNmte7qw7ZBhkjIAlNq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b604a0/btrF1B6dWzh/csKNmte7qw7ZBhkjIAlNq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b604a0/btrF1B6dWzh/csKNmte7qw7ZBhkjIAlNq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb604a0%2FbtrF1B6dWzh%2FcsKNmte7qw7ZBhkjIAlNq0%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;1623&quot; height=&quot;406&quot; data-origin-width=&quot;1623&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/완전탐색(BFS,DFS)</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/242</guid>
      <comments>https://algorithmstudy-mju.tistory.com/242#entry242comment</comments>
      <pubDate>Fri, 8 Jul 2022 23:46:12 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 25308 ) 방사형 그래프</title>
      <link>https://algorithmstudy-mju.tistory.com/244</link>
      <description>&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;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wZ0wD/btrGrXXgVDF/8r7WoQiWy4ZLDAk0XxXCdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wZ0wD/btrGrXXgVDF/8r7WoQiWy4ZLDAk0XxXCdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wZ0wD/btrGrXXgVDF/8r7WoQiWy4ZLDAk0XxXCdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwZ0wD%2FbtrGrXXgVDF%2F8r7WoQiWy4ZLDAk0XxXCdk%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;488&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;488&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;1286&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kGznG/btrGvUdeMY6/uZBfpXLk2zuKX4fxL3K8ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kGznG/btrGvUdeMY6/uZBfpXLk2zuKX4fxL3K8ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kGznG/btrGvUdeMY6/uZBfpXLk2zuKX4fxL3K8ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkGznG%2FbtrGvUdeMY6%2FuZBfpXLk2zuKX4fxL3K8ok%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;1286&quot; height=&quot;613&quot; data-origin-width=&quot;1286&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;1288&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0AciI/btrGvnmqFQ6/CrRqY3jOIJvrd6zZGJRzEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0AciI/btrGvnmqFQ6/CrRqY3jOIJvrd6zZGJRzEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0AciI/btrGvnmqFQ6/CrRqY3jOIJvrd6zZGJRzEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0AciI%2FbtrGvnmqFQ6%2FCrRqY3jOIJvrd6zZGJRzEK%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;1288&quot; height=&quot;604&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;604&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;1289&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKCT03/btrGv4GUfgH/N3vd4YbvINymEJ1rq5asWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKCT03/btrGv4GUfgH/N3vd4YbvINymEJ1rq5asWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKCT03/btrGv4GUfgH/N3vd4YbvINymEJ1rq5asWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKCT03%2FbtrGv4GUfgH%2FN3vd4YbvINymEJ1rq5asWK%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;1289&quot; height=&quot;478&quot; data-origin-width=&quot;1289&quot; data-origin-height=&quot;478&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;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오목/볼록 다각형을 판단하기위한 알고리즘으로 CCW를 사용한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;CCW가 잘 설명되어 있는글은&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jason9319.tistory.com/358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jason9319.tistory.com/358&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656935779341&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;CCW와 CCW를 이용한 선분 교차 판별&quot; data-og-description=&quot;PS에서 종종 이용되는 선분 교차 여부 판별을 CCW를 이용하여 비교적 간단(?)하게 할 수 있는 방법을 소개하려고 합니다. 그 전에 우선 CCW에 대하여 이야기 해보겠습니다. CCW는 Counterclockwise의 약자&quot; data-og-host=&quot;jason9319.tistory.com&quot; data-og-source-url=&quot;https://jason9319.tistory.com/358&quot; data-og-url=&quot;https://jason9319.tistory.com/358&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ymtrp/hyOZLZeZ8p/Yqu5seFqctJODEhOmz6eJ0/img.png?width=284&amp;amp;height=314&amp;amp;face=0_0_284_314,https://scrap.kakaocdn.net/dn/0qfPe/hyOZJmOHKi/CVUF6HEUM8nQogvG6vU9vk/img.png?width=284&amp;amp;height=314&amp;amp;face=0_0_284_314,https://scrap.kakaocdn.net/dn/sWUOt/hyOZHidA9j/YMPZteBrukoKKWtP0zZ4Lk/img.png?width=548&amp;amp;height=503&amp;amp;face=0_0_548_503&quot;&gt;&lt;a href=&quot;https://jason9319.tistory.com/358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jason9319.tistory.com/358&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ymtrp/hyOZLZeZ8p/Yqu5seFqctJODEhOmz6eJ0/img.png?width=284&amp;amp;height=314&amp;amp;face=0_0_284_314,https://scrap.kakaocdn.net/dn/0qfPe/hyOZJmOHKi/CVUF6HEUM8nQogvG6vU9vk/img.png?width=284&amp;amp;height=314&amp;amp;face=0_0_284_314,https://scrap.kakaocdn.net/dn/sWUOt/hyOZHidA9j/YMPZteBrukoKKWtP0zZ4Lk/img.png?width=548&amp;amp;height=503&amp;amp;face=0_0_548_503');&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;CCW와 CCW를 이용한 선분 교차 판별&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PS에서 종종 이용되는 선분 교차 여부 판별을 CCW를 이용하여 비교적 간단(?)하게 할 수 있는 방법을 소개하려고 합니다. 그 전에 우선 CCW에 대하여 이야기 해보겠습니다. CCW는 Counterclockwise의 약자&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jason9319.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이글을 판단하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Z=0인 두 벡터를 연결한다면, 1 &amp;gt; 2 &amp;gt; 3 순서의 ccw값이 ( z=0 인 외적값 )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;양수면 반시계방향에 위치에있다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0이면 일직선상에있다 ( 외적으로 만드는 평행사변형의 넓이값이 0이라는뜻)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;음수면 시계방향으로 세점이 위치해있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;를 이용하여, 점들간 ( 3점으로 했는데 모든점으로 확장해도 통과할듯하다 )의 ccw값이 음수이면,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;시계방향으로 점들이 배열된다는 뜻이고, 이는 볼록다각형이랑는 말과 동치이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;점의 좌표는 방사형 그래프를 원점으로 두고, 각 꼭지점은 pi/4 이므로 이를 이용하여 각 좌표를 계산할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/25308&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/25308&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656935620587&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;25308번: 방사형 그래프&quot; data-og-description=&quot;게임 캐릭터의 능력치를 한 눈에 보기 좋게 나타내는 방법으로 방사형 그래프가 있다. 캐릭터는 8개의 능력치를 갖고 있고 각 능력치를 $a_1, a_2, \cdots, a_8$이라고 하면, 그래프는 팔각형 형태이고&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/25308&quot; data-og-url=&quot;https://www.acmicpc.net/problem/25308&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwjORf/hyOYtMHoKf/pJGn7uRYUIxCHDx1JnyDMk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/iolSl/hyOZz5yJXK/56v7nRg2TTFQx0ZuDTgSKk/img.png?width=2048&amp;amp;height=1365&amp;amp;face=0_0_2048_1365,https://scrap.kakaocdn.net/dn/bsh8uy/hyOYeWmabk/0X2RmSaCv2GROVvaXXkKE1/img.png?width=2048&amp;amp;height=733&amp;amp;face=0_0_2048_733&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/25308&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/25308&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwjORf/hyOYtMHoKf/pJGn7uRYUIxCHDx1JnyDMk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/iolSl/hyOZz5yJXK/56v7nRg2TTFQx0ZuDTgSKk/img.png?width=2048&amp;amp;height=1365&amp;amp;face=0_0_2048_1365,https://scrap.kakaocdn.net/dn/bsh8uy/hyOYeWmabk/0X2RmSaCv2GROVvaXXkKE1/img.png?width=2048&amp;amp;height=733&amp;amp;face=0_0_2048_733');&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;25308번: 방사형 그래프&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;게임 캐릭터의 능력치를 한 눈에 보기 좋게 나타내는 방법으로 방사형 그래프가 있다. 캐릭터는 8개의 능력치를 갖고 있고 각 능력치를 $a_1, a_2, \cdots, a_8$이라고 하면, 그래프는 팔각형 형태이고&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;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class BOJ_25308{
	public static int input[] = new int[8];
	public static int order[] = {0,1,2,3,4,5,6,7};
	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0;i&amp;lt;8;i++) {input[i] = Integer.parseInt(st.nextToken());}
		int answer=0;
		do {

		    boolean isPossible = true;
			for(int i=0;i&amp;lt;8;i++) {
			
				float result_ccw = ccw(
						                   new float[] { (float) - (input[order[i%8]] / Math.sqrt(2)),  (float) (input[order[i%8]] / Math.sqrt(2)) }
					                     , new float[] { (float)   0  ,  (float) (input[order[(i+1)%8]])}
					                     , new float[] { (float)  (input[order[(i+2)%8]] / Math.sqrt(2)),  (float) (input[order[(i+2)%8]] / Math.sqrt(2))}
					                   );
				if(result_ccw &amp;gt;= 0) {
					isPossible =false;
				}
				if(!isPossible) {
					break;
				}
			}
			
			
					
			
			if(isPossible) {
				answer++;
			}
		} while(nextPermutation(order));
		System.out.println(answer);
	}
	

	public static float ccw(float []a, float []b, float []c) {
		// ccw 계산 , 일직선에 올수 없다( 정수이기 때문 )
		return (a[0]*b[1]+b[0]*c[1]+c[0]*a[1])-(b[0]*a[1]+c[0]*b[1]+a[0]*c[1]);
		
	}
	static boolean nextPermutation(int[] arr) {
		
		int i=7;
		while( i&amp;gt;0 &amp;amp;&amp;amp; arr[i-1] &amp;gt;= arr[i] ) --i; 
		if(i==0) return false;
		
		int j = 7;
		while(arr[i-1]&amp;gt;=arr[j]) --j;
		
		int temp = order[i-1];
		order[i-1] = order[j];
		order[j] = temp;
		
		int k = 7;
		while(i&amp;lt;k) {
		    temp=order[i];
		    order[i]=order[k];
		    order[k]=temp;
			++i; --k;
		}
		return true;		
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biTMjs/btrGrXwcsmM/gavAEHyyJ67r7JXkKn2Ga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biTMjs/btrGrXwcsmM/gavAEHyyJ67r7JXkKn2Ga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biTMjs/btrGrXwcsmM/gavAEHyyJ67r7JXkKn2Ga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiTMjs%2FbtrGrXwcsmM%2FgavAEHyyJ67r7JXkKn2Ga1%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;1302&quot; height=&quot;318&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/기하</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/244</guid>
      <comments>https://algorithmstudy-mju.tistory.com/244#entry244comment</comments>
      <pubDate>Mon, 4 Jul 2022 21:04:53 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 25306 ) 연속 XOR</title>
      <link>https://algorithmstudy-mju.tistory.com/243</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tyfNW/btrF4dMkIDS/0EAYbjtG4ce3stoq3XNhW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tyfNW/btrF4dMkIDS/0EAYbjtG4ce3stoq3XNhW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tyfNW/btrF4dMkIDS/0EAYbjtG4ce3stoq3XNhW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtyfNW%2FbtrF4dMkIDS%2F0EAYbjtG4ce3stoq3XNhW1%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;1286&quot; height=&quot;805&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;805&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;1298&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0aqpL/btrF4fciXCB/YXDBeTFwVOVYGe0ZhnZQ11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0aqpL/btrF4fciXCB/YXDBeTFwVOVYGe0ZhnZQ11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0aqpL/btrF4fciXCB/YXDBeTFwVOVYGe0ZhnZQ11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0aqpL%2FbtrF4fciXCB%2FYXDBeTFwVOVYGe0ZhnZQ11%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;1298&quot; height=&quot;613&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;613&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/25306&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/25306&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656508694374&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;25306번: 연속 XOR&quot; data-og-description=&quot;3에서 5까지의 자연수는 3, 4, 5로, 세 개 존재한다. 세 수를 XOR한 값은 (3 XOR 4) XOR 5 = 7 XOR 5 = 2&amp;nbsp;이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/25306&quot; data-og-url=&quot;https://www.acmicpc.net/problem/25306&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKSU7f/hyOV4EXVZ3/zuTk2KV39cVpdwHyQzN14K/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/25306&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/25306&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKSU7f/hyOV4EXVZ3/zuTk2KV39cVpdwHyQzN14K/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;25306번: 연속 XOR&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;3에서 5까지의 자연수는 3, 4, 5로, 세 개 존재한다. 세 수를 XOR한 값은 (3 XOR 4) XOR 5 = 7 XOR 5 = 2&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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;XOR연산(결합,교환) 특성에 의해 1-(A-1) 까지와 1-B까지 숫자에 대한 XOR이&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;A-B까지 XOR이 같게된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;첫번째 자리를 제외한 비트를 나열해보면, 모두 주기를 띄고있다.( 0011 00001111 ... )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 2^N으로 비트를 밀면서 해당 번째가 00에속하는지 11에 속하는지 먼저 판단하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;11영역에 속한다면, 해당 1의 누적개수가 짝수개면 0 홀수개면 1로 비트를 바꾸어준다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		long n = Long.parseLong(st.nextToken());
		long m = Long.parseLong(st.nextToken());
		
		System.out.println((XOR(n-1)
				 ^XOR(m)));
	}

	private static long XOR(long num) {
		long answer =0;
		if(num%2==1) {
			if( ((num+1)/2)%2==1) {answer++;}
		} else {
			if( ((num)/2)%2==1) {answer++;}
		}
		
	 for(long i=1;i&amp;lt;=num;i*=2) {
			if( (num%(i*2))&amp;gt;=i&amp;amp;&amp;amp;
					 (((num%(i*2))&amp;amp;1)==0) ) {
				answer ^=i;
			}
		
		}
		return answer;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIGpWP/btrF3itRElz/XzNWYbPwRH3IGz195LpW40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIGpWP/btrF3itRElz/XzNWYbPwRH3IGz195LpW40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIGpWP/btrF3itRElz/XzNWYbPwRH3IGz195LpW40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIGpWP%2FbtrF3itRElz%2FXzNWYbPwRH3IGz195LpW40%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;351&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/구현,시뮬</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/243</guid>
      <comments>https://algorithmstudy-mju.tistory.com/243#entry243comment</comments>
      <pubDate>Wed, 29 Jun 2022 22:31:32 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 2559 ) 수열</title>
      <link>https://algorithmstudy-mju.tistory.com/241</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUNyVl/btrFUjZSy9l/eLqXymPuOjulyuejkXzkoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUNyVl/btrFUjZSy9l/eLqXymPuOjulyuejkXzkoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUNyVl/btrFUjZSy9l/eLqXymPuOjulyuejkXzkoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUNyVl%2FbtrFUjZSy9l%2FeLqXymPuOjulyuejkXzkoK%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;1290&quot; height=&quot;868&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;868&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;1276&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0r2Bv/btrFSW5oYSD/9uQ3nbLlNRAAK4herRV0Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0r2Bv/btrFSW5oYSD/9uQ3nbLlNRAAK4herRV0Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0r2Bv/btrFSW5oYSD/9uQ3nbLlNRAAK4herRV0Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0r2Bv%2FbtrFSW5oYSD%2F9uQ3nbLlNRAAK4herRV0Ik%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;785&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;785&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2559&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2559&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656340872508&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;2559번: 수열&quot; data-og-description=&quot;첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2559&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2559&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/J7hBF/hyOUQUb607/6Bba1wW71aUKqRKPd8BW60/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/2559&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2559&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/J7hBF/hyOUQUb607/6Bba1wW71aUKqRKPd8BW60/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;2559번: 수열&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기&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;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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;K개가 될때까지 더하고, 이후에는 K길이 전만큼은 빼주면서 현재 인덱스 값을 더해주며 진행한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		int now= 0;
		int answer=-987654321;
		int arr[] = new int[N];
		st = new StringTokenizer(br.readLine());
		for(int i=0;i&amp;lt;N;) {arr[i] = Integer.parseInt(st.nextToken());++i;}
		for(int i=0;i&amp;lt;N;) {
			if(i&amp;lt;K-1) {
				now+=arr[i];
			} else {
				now+=arr[i];
				answer = answer &amp;gt; now ? answer : now;
				now-=arr[i-K+1];
				
			}
			++i;
		}
		System.out.println(answer);
		 
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwS8I/btrFTdeAkCG/Bl85Dq5KOiCvOlPgUcuxOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwS8I/btrFTdeAkCG/Bl85Dq5KOiCvOlPgUcuxOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwS8I/btrFTdeAkCG/Bl85Dq5KOiCvOlPgUcuxOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwS8I%2FbtrFTdeAkCG%2FBl85Dq5KOiCvOlPgUcuxOK%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; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/구현,시뮬</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/241</guid>
      <comments>https://algorithmstudy-mju.tistory.com/241#entry241comment</comments>
      <pubDate>Mon, 27 Jun 2022 23:42:01 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 1525 ) 퍼즐</title>
      <link>https://algorithmstudy-mju.tistory.com/240</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsKz7G/btrFGmijRAU/ykNu6NzykncgtfFTCxGP20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsKz7G/btrFGmijRAU/ykNu6NzykncgtfFTCxGP20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsKz7G/btrFGmijRAU/ykNu6NzykncgtfFTCxGP20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsKz7G%2FbtrFGmijRAU%2FykNu6NzykncgtfFTCxGP20%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;1296&quot; height=&quot;840&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;840&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;1284&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9qfo2/btrFHFg8PkF/EilGfgG0VrULsWYKrDjyZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9qfo2/btrFHFg8PkF/EilGfgG0VrULsWYKrDjyZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9qfo2/btrFHFg8PkF/EilGfgG0VrULsWYKrDjyZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9qfo2%2FbtrFHFg8PkF%2FEilGfgG0VrULsWYKrDjyZ1%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;1284&quot; height=&quot;760&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;760&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;1304&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJUtMW/btrFFqMwPmd/y8vgclH2ZYKnUfOZyOyOA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJUtMW/btrFFqMwPmd/y8vgclH2ZYKnUfOZyOyOA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJUtMW/btrFFqMwPmd/y8vgclH2ZYKnUfOZyOyOA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJUtMW%2FbtrFFqMwPmd%2Fy8vgclH2ZYKnUfOZyOyOA0%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;1304&quot; height=&quot;438&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;438&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;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1525&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1525&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656114884524&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;1525번: 퍼즐&quot; data-og-description=&quot;세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1525&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1525&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gSZFS/hyORMFxP0a/BAVUcZ1KpiKrTdk70kngL0/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/1525&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1525&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gSZFS/hyORMFxP0a/BAVUcZ1KpiKrTdk70kngL0/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;1525번: 퍼즐&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 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;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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;BFS를 통하여&lt;br /&gt;1 2 3 &lt;br /&gt;4 5 6 &lt;br /&gt;7 8 0&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인 경우에 도달할 수 있는지 확인해주자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ArrayList의 Clone() 메소드를 통하여 현재값과 동일한 객체를 쉽게 만들 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(방문체크용)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
	
		
		HashMap&amp;lt;ArrayList, Integer&amp;gt; visit = new HashMap&amp;lt;&amp;gt;();
        
		int dir[][] = {{1,0},{-1,0},{0,-1},{0,1}};
		ArrayDeque&amp;lt;ArrayList&amp;lt;Integer&amp;gt;&amp;gt; dq = new ArrayDeque&amp;lt;&amp;gt;();
		
		ArrayList&amp;lt;Integer&amp;gt; al = new ArrayList&amp;lt;&amp;gt;();
		for(int i=0;i&amp;lt;3;) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for(int j=0;j&amp;lt;3;) {
				int now = Integer.parseInt(st.nextToken());
				al.add(now);
				++j;
			}
			++i;
		}
		int cnt =0;
		dq.add(al);
		visit.put((ArrayList&amp;lt;Integer&amp;gt;)al.clone(),0);
		while(!dq.isEmpty()) {
			int size = dq.size();
			cnt++;
			while(size&amp;gt;0) {
				
				al = dq.poll();
				int index = findZeroPos(al);
				int y = index/3;
				int x = index%3;
				for(int i=0;i&amp;lt;4;) {
					int nexty=y+dir[i][0];
					int nextx=x+dir[i][1];
					if(nexty&amp;gt;=0&amp;amp;&amp;amp;nextx&amp;gt;=0&amp;amp;&amp;amp;nexty&amp;lt;3&amp;amp;&amp;amp;nextx&amp;lt;3) {
						Collections.swap(al, y*3+x, nexty*3+nextx);
						if(!visit.containsKey(al)) {
							dq.add((ArrayList&amp;lt;Integer&amp;gt;) al.clone());
							visit.put((ArrayList&amp;lt;Integer&amp;gt;) al.clone(), cnt);
						}
						Collections.swap(al, nexty*3+nextx ,y*3+x);
					}
					++i;
				}
				size--;
			}
		}
		al.clear();
		for(int i=1;i&amp;lt;=8;) {
			al.add(i);
			++i;
		}
		al.add(0);
		if(visit.containsKey(al)) {
			System.out.println(visit.get(al));
		} else {
			System.out.println(&quot;-1&quot;);
		}
	}

	private static int findZeroPos(ArrayList&amp;lt;Integer&amp;gt; al) {
		int size =al.size();
		for(int i=0;i&amp;lt;size;) {
			if(al.get(i)==0) return i;
			++i;
		}
		return -1;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci7YBF/btrFFO7MhMe/dQ7sNFGWxE07Qskuy1pOK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci7YBF/btrFFO7MhMe/dQ7sNFGWxE07Qskuy1pOK1/img.png&quot; data-alt=&quot;항상 경곗값의 테스트케이스를 조심하자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci7YBF/btrFFO7MhMe/dQ7sNFGWxE07Qskuy1pOK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci7YBF%2FbtrFFO7MhMe%2FdQ7sNFGWxE07Qskuy1pOK1%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;1282&quot; height=&quot;353&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;항상 경곗값의 테스트케이스를 조심하자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/완전탐색(BFS,DFS)</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/240</guid>
      <comments>https://algorithmstudy-mju.tistory.com/240#entry240comment</comments>
      <pubDate>Sat, 25 Jun 2022 09:03:39 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 1865 ) 웜홀</title>
      <link>https://algorithmstudy-mju.tistory.com/239</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpzEij/btrFuCZQBK9/KXeKCf1aeQ9839A3skqF80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpzEij/btrFuCZQBK9/KXeKCf1aeQ9839A3skqF80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpzEij/btrFuCZQBK9/KXeKCf1aeQ9839A3skqF80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpzEij%2FbtrFuCZQBK9%2FKXeKCf1aeQ9839A3skqF80%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;1607&quot; height=&quot;776&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;776&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;1640&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TVMYk/btrFwT7iAsM/rn9nhB8NT8AhTkFgEb3pNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TVMYk/btrFwT7iAsM/rn9nhB8NT8AhTkFgEb3pNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TVMYk/btrFwT7iAsM/rn9nhB8NT8AhTkFgEb3pNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTVMYk%2FbtrFwT7iAsM%2Frn9nhB8NT8AhTkFgEb3pNK%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;1640&quot; height=&quot;482&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;482&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;1603&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxS26c/btrFt1laVpO/joEMfPxRBGJIOsbQbICOWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxS26c/btrFt1laVpO/joEMfPxRBGJIOsbQbICOWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxS26c/btrFt1laVpO/joEMfPxRBGJIOsbQbICOWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxS26c%2FbtrFt1laVpO%2FjoEMfPxRBGJIOsbQbICOWK%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;1603&quot; height=&quot;526&quot; data-origin-width=&quot;1603&quot; data-origin-height=&quot;526&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1865&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1865&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655897975237&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;1865번: 웜홀&quot; data-og-description=&quot;첫 번째 줄에는 테스트케이스의 개수 TC(1 &amp;le; TC &amp;le; 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 &amp;le; N &amp;le; 500), &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1865&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1865&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QLlol/hyORGKhYZJ/lOjC8FdsrKziEl8Pslo3V0/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/1865&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1865&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QLlol/hyORGKhYZJ/lOjC8FdsrKziEl8Pslo3V0/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;1865번: 웜홀&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에는 테스트케이스의 개수 TC(1 &amp;le; TC &amp;le; 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 &amp;le; N &amp;le; 500),&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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;MCMF(Minimum&amp;nbsp;Cost&amp;nbsp;Maximum&amp;nbsp;Flow)를 위한 SPFA(Shortest Path Faster Algorithm) 공부중 푼문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1-N 의 정점에서 SPFA를 실행하여 음의 사이클이 있는지 확인한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SPFA는 벨만-포드 알고리즘과 유사하게 작동하는데, 벨만 포드가 모든 간선에대해서 경로 업데이트를 진행한다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SPFA는 변화가 있는 노드를 큐에넣고 큐가 더이상 진행되지 않을때까지 경로 업데이트를 진행한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;벨만 포드 알고리즘에서 V-1번 이후 경로업데이트가 이루어지면 음의 사이클을 존재함을 판단하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SPFA에서는 특정노드를 N번 이상 방문한다면 음의 사이클이 존재함을 판단한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;package algorithm_2022;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BOJ_1865 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		StringBuilder sb = new StringBuilder();
		
		int T = Integer.parseInt(st.nextToken());
		for(int i=0;i&amp;lt;T;) {
			
			st = new StringTokenizer(br.readLine());
			
			int N = Integer.parseInt(st.nextToken());
			int M = Integer.parseInt(st.nextToken());
			int W = Integer.parseInt(st.nextToken());
			
			ArrayList&amp;lt;int []&amp;gt; nodes[] = new ArrayList[N];
 			for(int j=0;j&amp;lt;N;) {
 				nodes[j] = new ArrayList&amp;lt;&amp;gt;();
 				++j;
 			}
			
 			for(int j=0;j&amp;lt;M;) {
 				st = new StringTokenizer(br.readLine());
 				int S = Integer.parseInt(st.nextToken())-1;
 				int E = Integer.parseInt(st.nextToken())-1;
 				int TI = Integer.parseInt(st.nextToken());
 				nodes[S].add(new int[] {E,TI});
 				nodes[E].add(new int[] {S,TI});
 				++j;
 			}
 			
 			for(int j=0;j&amp;lt;W;) {
 				st = new StringTokenizer(br.readLine());
 				int S = Integer.parseInt(st.nextToken())-1;
 				int E = Integer.parseInt(st.nextToken())-1;
 				int TI = Integer.parseInt(st.nextToken());
 				nodes[S].add(new int[] {E,-TI});
 				++j;
 			}
 			
 			boolean infinite = false;
 			ArrayDeque&amp;lt;Integer&amp;gt; dq = new ArrayDeque&amp;lt;&amp;gt;();
 			top:
 			for(int j=0;j&amp;lt;N;) {
 			    // 모든 노드를 시작점으로 SPFA를 실행하여 음수 사이클이 존재하는지 파악
 				
 			  	int cnt[] = new int[N];
 			  	int cost[] = new int[N];
 			  	Arrays.fill(cost, 987654321);
 			  	boolean InQ[] = new boolean[N];
 				
 				dq.add(j);
 				cnt[j]=1;
 				InQ[j]=true;
 				
 				while(!dq.isEmpty()) {
 					int now = dq.poll();
 					InQ[now] = false;
 					int size = nodes[now].size();
 					for(int k=0;k&amp;lt;size;) {

 						int next = nodes[now].get(k)[0];
 						int pathValue = nodes[now].get(k)[1];
 						if(cost[next] &amp;gt; cost[now] + pathValue) {
 							cost[next] = cost[now] + pathValue;
 							if(!InQ[next]) {
 								InQ[next] = true;
 								if(++cnt[next]&amp;gt;N) {
 									infinite=true;
 									break top;
 								}
 								dq.add(next);
 							}
 						}
 						k++;
 					}
 				}
 				++j;
 			}
 			if(infinite) {
 				sb.append(&quot;YES\n&quot;);
 			} else {
 				sb.append(&quot;NO\n&quot;);	
 			}
 			++i;
		}
		System.out.println(sb.toString());
		
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vMSGl/btrFwvFsvHn/k51MHB65Oc5z4NYJmHEFQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vMSGl/btrFwvFsvHn/k51MHB65Oc5z4NYJmHEFQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vMSGl/btrFwvFsvHn/k51MHB65Oc5z4NYJmHEFQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvMSGl%2FbtrFwvFsvHn%2Fk51MHB65Oc5z4NYJmHEFQk%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;1590&quot; height=&quot;365&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/SPFA</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/239</guid>
      <comments>https://algorithmstudy-mju.tistory.com/239#entry239comment</comments>
      <pubDate>Wed, 22 Jun 2022 20:56:17 +0900</pubDate>
    </item>
    <item>
      <title>Ethereum 사이드 체인 VS L2체인</title>
      <link>https://algorithmstudy-mju.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.web3.university/article/sidechains-vs-layer2s&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.web3.university/article/sidechains-vs-layer2s&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655639385159&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;Ethereum Sidechains vs Layer 2s: What&amp;rsquo;s the Difference?&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.web3.university&quot; data-og-source-url=&quot;https://www.web3.university/article/sidechains-vs-layer2s&quot; data-og-url=&quot;https://www.web3.university/article/sidechains-vs-layer2s&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5HNrg/hyONQnV0Zu/ubD4T8RCsW8zo5Jbp3KzUK/img.png?width=1725&amp;amp;height=464&amp;amp;face=0_0_1725_464&quot;&gt;&lt;a href=&quot;https://www.web3.university/article/sidechains-vs-layer2s&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.web3.university/article/sidechains-vs-layer2s&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5HNrg/hyONQnV0Zu/ubD4T8RCsW8zo5Jbp3KzUK/img.png?width=1725&amp;amp;height=464&amp;amp;face=0_0_1725_464');&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;Ethereum Sidechains vs Layer 2s: What&amp;rsquo;s the Difference?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.web3.university&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.ddengle.com/yanatu/15044384&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.ddengle.com/yanatu/15044384&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655639642444&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;이더리움 레이어2(L2) 솔루션 총 정리 - 쟁선의야나투 - 땡글닷컴&quot; data-og-description=&quot;&amp;nbsp; 이더리움 레이어2(L2) 솔루션 총 정리 원문 : Xangle Originals &amp;nbsp; L2(레이어2) 솔루션은 이더리움 메인넷의 확장성 문제를 해결하기 위해 설계된 별도의 레이어로, 최대한 빠르고 저렴하게 트랜젝션&quot; data-og-host=&quot;www.ddengle.com&quot; data-og-source-url=&quot;https://www.ddengle.com/yanatu/15044384&quot; data-og-url=&quot;https://www.ddengle.com/yanatu/15044384&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/f15tg/hyOOGxelEf/6ddYim7QTF61xSaCUYikI1/img.png?width=1201&amp;amp;height=1280&amp;amp;face=0_0_1201_1280,https://scrap.kakaocdn.net/dn/1y3uf/hyONJbhMdc/z5OM3cIJph7mlDp5y5yxq0/img.png?width=1201&amp;amp;height=1280&amp;amp;face=0_0_1201_1280&quot;&gt;&lt;a href=&quot;https://www.ddengle.com/yanatu/15044384&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.ddengle.com/yanatu/15044384&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/f15tg/hyOOGxelEf/6ddYim7QTF61xSaCUYikI1/img.png?width=1201&amp;amp;height=1280&amp;amp;face=0_0_1201_1280,https://scrap.kakaocdn.net/dn/1y3uf/hyONJbhMdc/z5OM3cIJph7mlDp5y5yxq0/img.png?width=1201&amp;amp;height=1280&amp;amp;face=0_0_1201_1280');&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;이더리움 레이어2(L2) 솔루션 총 정리 - 쟁선의야나투 - 땡글닷컴&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 이더리움 레이어2(L2) 솔루션 총 정리 원문 : Xangle Originals &amp;nbsp; L2(레이어2) 솔루션은 이더리움 메인넷의 확장성 문제를 해결하기 위해 설계된 별도의 레이어로, 최대한 빠르고 저렴하게 트랜젝션&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.ddengle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결론은 이더리움 메인체인의 과부하로 인한 L1 (이더)를 확장하는가 (사이드체인) ? L2에서 배치성으로 처리후에&lt;br /&gt;L1에 반영하는가의 차이이고 앞으로 이더리움 부하해소를위해서 다양한 방법들이 나오지 않을까..&lt;/p&gt;</description>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/238</guid>
      <comments>https://algorithmstudy-mju.tistory.com/238#entry238comment</comments>
      <pubDate>Sun, 19 Jun 2022 20:56:33 +0900</pubDate>
    </item>
    <item>
      <title>SQL 튜닝 기초</title>
      <link>https://algorithmstudy-mju.tistory.com/237</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://programmingyoon.tistory.com/265?category=785985&quot;&gt;https://programmingyoon.tistory.com/265?category=785985&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1655448971953&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;배치 튜닝에서 마법사 같은 힌트절 삼총사 ? USE_HASH, FULL, PARALLEL&quot; data-og-description=&quot;USE_HASH, FULL, PARALLEL 3가지 힌트절은 배치성 쿼리에서 가장 많이 사용되는 힌트절이다. 한마디로 대용량 데이터 처리 및 조회에 빈번하게 사용하는 힌트절이다. 위의 3가지 힌트절만 잘 조합하여 &quot; data-og-host=&quot;programmingyoon.tistory.com&quot; data-og-source-url=&quot;https://programmingyoon.tistory.com/265?category=785985&quot; data-og-url=&quot;https://programmingyoon.tistory.com/265&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZneoK/hyONHQlCa8/RkY3g3FFKkdXMja32ZL8VK/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269,https://scrap.kakaocdn.net/dn/dwhFmA/hyONGKHF9q/EXxP15cAm9fElbcsKH05sk/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269,https://scrap.kakaocdn.net/dn/smS4U/hyOMHdnmu0/kJwZ6QMaxS3YAQHYcXD6k0/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269&quot;&gt;&lt;a href=&quot;https://programmingyoon.tistory.com/265?category=785985&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://programmingyoon.tistory.com/265?category=785985&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZneoK/hyONHQlCa8/RkY3g3FFKkdXMja32ZL8VK/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269,https://scrap.kakaocdn.net/dn/dwhFmA/hyONGKHF9q/EXxP15cAm9fElbcsKH05sk/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269,https://scrap.kakaocdn.net/dn/smS4U/hyOMHdnmu0/kJwZ6QMaxS3YAQHYcXD6k0/img.png?width=502&amp;amp;height=269&amp;amp;face=0_0_502_269');&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;배치 튜닝에서 마법사 같은 힌트절 삼총사 ? USE_HASH, FULL, PARALLEL&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;USE_HASH, FULL, PARALLEL 3가지 힌트절은 배치성 쿼리에서 가장 많이 사용되는 힌트절이다. 한마디로 대용량 데이터 처리 및 조회에 빈번하게 사용하는 힌트절이다. 위의 3가지 힌트절만 잘 조합하여&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmingyoon.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;배치쿼리 튜닝시 사용할 힌트 3종류&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;INDEX와 힌트(PARALLEL은 DBA와 논의) 기초&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순 컬럼 조회를 leading하는거면 옵티마이저가 최적의 실행계획을 실행하겠지만,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;고객원장, 수익성적재와같은 대량테이블을 활용하여 특정 배치를 짤때에는 병렬처리나 접근방식을 지정해주는게 좋다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;물론 팀에서 정형화된 힌트절 (insert나 select시에) 이있지만 알고 사용하고 특정상황에서는 실행계획을 참고하여&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;튜닝까지 진행해야한다.&lt;/p&gt;</description>
      <category>DB</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/237</guid>
      <comments>https://algorithmstudy-mju.tistory.com/237#entry237comment</comments>
      <pubDate>Fri, 17 Jun 2022 16:01:55 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 21609 ) 상어 중학교</title>
      <link>https://algorithmstudy-mju.tistory.com/236</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7f6In/btrDpQyQuGL/EqzK74qbYNyj8edwdpfBG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7f6In/btrDpQyQuGL/EqzK74qbYNyj8edwdpfBG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7f6In/btrDpQyQuGL/EqzK74qbYNyj8edwdpfBG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7f6In%2FbtrDpQyQuGL%2FEqzK74qbYNyj8edwdpfBG0%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;1608&quot; height=&quot;845&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;845&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;1577&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8Okmf/btrDllfYHzA/jpNJdtjhlLkRru6XmR6zT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8Okmf/btrDllfYHzA/jpNJdtjhlLkRru6XmR6zT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8Okmf/btrDllfYHzA/jpNJdtjhlLkRru6XmR6zT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8Okmf%2FbtrDllfYHzA%2FjpNJdtjhlLkRru6XmR6zT0%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;1577&quot; height=&quot;716&quot; data-origin-width=&quot;1577&quot; data-origin-height=&quot;716&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;1559&quot; data-origin-height=&quot;717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zOCLv/btrDrQSDVaV/ZdFMzJR4Bxkkqo9YT6Gmg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zOCLv/btrDrQSDVaV/ZdFMzJR4Bxkkqo9YT6Gmg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zOCLv/btrDrQSDVaV/ZdFMzJR4Bxkkqo9YT6Gmg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzOCLv%2FbtrDrQSDVaV%2FZdFMzJR4Bxkkqo9YT6Gmg0%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;1559&quot; height=&quot;717&quot; data-origin-width=&quot;1559&quot; data-origin-height=&quot;717&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;1511&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZT5Pv/btrDj2gcsKS/gphM1tbHdTcg7hiaZLyMi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZT5Pv/btrDj2gcsKS/gphM1tbHdTcg7hiaZLyMi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZT5Pv/btrDj2gcsKS/gphM1tbHdTcg7hiaZLyMi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZT5Pv%2FbtrDj2gcsKS%2FgphM1tbHdTcg7hiaZLyMi1%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;1511&quot; height=&quot;710&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;710&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;1588&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2KHw/btrDrQ6bAgw/yUoErn7QBzDMNRTvPg7Ce1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2KHw/btrDrQ6bAgw/yUoErn7QBzDMNRTvPg7Ce1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2KHw/btrDrQ6bAgw/yUoErn7QBzDMNRTvPg7Ce1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2KHw%2FbtrDrQ6bAgw%2FyUoErn7QBzDMNRTvPg7Ce1%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;1588&quot; height=&quot;667&quot; data-origin-width=&quot;1588&quot; data-origin-height=&quot;667&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;1595&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxJFt4/btrDljoXzLH/GREI0JHUs230hPL7jYuElK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxJFt4/btrDljoXzLH/GREI0JHUs230hPL7jYuElK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxJFt4/btrDljoXzLH/GREI0JHUs230hPL7jYuElK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxJFt4%2FbtrDljoXzLH%2FGREI0JHUs230hPL7jYuElK%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;1595&quot; height=&quot;761&quot; data-origin-width=&quot;1595&quot; data-origin-height=&quot;761&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;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/21609&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/21609&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653809346260&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;21609번: 상어 중학교&quot; data-og-description=&quot;상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N&amp;times;N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/21609&quot; data-og-url=&quot;https://www.acmicpc.net/problem/21609&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMpUjv/hyOzJufHE1/w6x1K2mSuD36jCKSAecIJK/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/21609&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/21609&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMpUjv/hyOzJufHE1/w6x1K2mSuD36jCKSAecIJK/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;21609번: 상어 중학교&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N&amp;times;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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;매번 가장큰 size를 가진 일반 블록을 찾기위해 NXN을 탐색한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(사이즈가 같은경우는 무지개 블록이, 무지개블록이 같은경우는 대표블록의 Y,X값을 참조)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 블록이 그룹이 되는 조건을 BFS를 진행하며 확인해준다. ( size가 1이면 그룹이 될 수 없다 )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한, 점수를 획득할 그룹이 지정되면 반시계반향으로 돌리는 로직과 ( y,x -&amp;gt; 한변의 길이-x,y )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;중력을 받아서 아래로 내려오는 로직을 미리 구현해 놓으면, 필요할 때에 호출하여 사용하면된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;구현문제는 비슷한 유형 ( 시계/반시계 회전, 특정 조건으로 배열 새로제작 )을 띄기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;양치기로 구현 속도를 빠르게 줄일 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;package algorithm_2022;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class boj_21609 {

	public static int ignore =0;
	public static class node{
		  int size;
		  int rainbow;
		  int RepreY;
		  int RepreX;
		  boolean isGroup;
		  ArrayList&amp;lt;int[]&amp;gt; coord;
		  public node() {
			  size=0; rainbow=0; RepreY=0; RepreX=0; isGroup=false;
			  coord = new ArrayList&amp;lt;&amp;gt;();
		 }
		
	}
	public static void main(String[] args) throws IOException {
		
	  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	  StringTokenizer st = new StringTokenizer(br.readLine());
	  
	  int N = Integer.parseInt(st.nextToken());
	  int M = Integer.parseInt(st.nextToken());
	  ignore = M+1;
	  boolean isContinue = true;
	  int [][] dir = {{1,0},{-1,0},{0,1},{0,-1}};
	  ArrayDeque&amp;lt;int []&amp;gt; dq = new ArrayDeque&amp;lt;&amp;gt;();
	  PriorityQueue&amp;lt;node&amp;gt; pq = new PriorityQueue&amp;lt;&amp;gt;(new Comparator&amp;lt;node&amp;gt;() {
		  @Override
		public int compare(node o1, node o2) {
			// 넓이,무지개 블록수, 대표블록의 행, 대표블록의 열
			if(o1.size&amp;gt;o2.size) return -1;
			else if(o1.size&amp;lt;o2.size) return 1;
			else {
				if(o1.rainbow&amp;gt;o2.rainbow) return -1;
				else if(o1.rainbow&amp;lt;o2.rainbow) return 1;
				else {
					if(o1.RepreY&amp;gt;o2.RepreY) return -1;
					else if(o1.RepreY&amp;lt;o2.RepreY) return 1;
					else {
						if(o1.RepreX&amp;gt;o2.RepreX) return -1;
						else if(o1.RepreX&amp;lt;o2.RepreX) return 1;
						else return 0;
					}
				}
			}
		}
	  });
	  int map[][] = new int[N][N];
	  int answer =0;
	  for(int y=0;y&amp;lt;N;y++) {st = new StringTokenizer(br.readLine()); for(int x=0;x&amp;lt;N;x++) {map[y][x] = Integer.parseInt(st.nextToken());}}
	  // end of input
	  while(isContinue) {
		  // 방문 체크
		  boolean isVisit[][] = new boolean[N][N];
		 
		  node n = new node();
		
		  
		  for(int y=0;y&amp;lt;N;y++) {
			  for(int x=0;x&amp;lt;N;x++) {
				  if(map[y][x]!=0 &amp;amp;&amp;amp; map[y][x]!=-1&amp;amp;&amp;amp; !isVisit[y][x] &amp;amp;&amp;amp; map[y][x]!=ignore) {
					 
					// bfs 
					n = new node();
					n.size=0;
					n.rainbow=0;
					n.RepreY = -1;
					n.RepreX = -1;
				    
					dq.clear();
				    dq.add(new int[] {y,x,map[y][x]});
				    isVisit[y][x] = true;
				    while(!dq.isEmpty()) {
				    	int now[] = dq.poll();
				    	int nowy = now[0];
				    	int nowx = now[1];
				    	int nowc = now[2];
				    	n.size++;
				    	if(n.size&amp;gt;=2&amp;amp;&amp;amp;!n.isGroup) {
				    		n.isGroup = true;
				    	} else if(n.size==1){
				    		// 작은것들이 기준블록의 대상이됨
				    	    n.RepreY=y;
				    	    n.RepreX=x;
				    	    n.coord.add(new int[] {y,x});
				    	}
				    	
				    	for(int i=0;i&amp;lt;4;i++) {
				    		int nexty=nowy +dir[i][0];
				    		int nextx=nowx +dir[i][1];
				    		if(nexty&amp;gt;=0&amp;amp;&amp;amp;nextx&amp;gt;=0&amp;amp;&amp;amp;nexty&amp;lt;N&amp;amp;&amp;amp;nextx&amp;lt;N) {
				    			if(map[nexty][nextx]!=-1 || map[nexty][nextx] !=ignore) {
				    				if(map[nexty][nextx]==0 &amp;amp;&amp;amp; !isRainBow(n.coord,nexty,nextx)) {
				    					n.rainbow++;
				    					dq.add(new int[] {nexty,nextx,nowc});
					    				n.coord.add(new int[] {nexty,nextx});
				    				} else {
				    					if(!isVisit[nexty][nextx] &amp;amp;&amp;amp; map[nexty][nextx] == nowc) {
				    						isVisit[nexty][nextx] = true;
				    						dq.add(new int[] {nexty,nextx,nowc});
						    				n.coord.add(new int[] {nexty,nextx});
						    				  if(n.RepreY &amp;gt; nexty) {
						    					  n.RepreY = n.RepreY &amp;gt; nexty ? nexty : n.RepreY;
				    		                      n.RepreX = nextx;
						    				  } else if(n.RepreY==nexty) {
						    					  n.RepreX = n.RepreX &amp;gt; nextx ? nextx : n.RepreX;
						    				  }
				    					}
				    				}
				    			}
				    		}
				    	}
				    }
				    
				    
				    if(n.isGroup) {
						  pq.add(n);
					  }
				  }
			  }
		  }
		 
		  if(pq.size()==0) {
			  isContinue = false;
			  break;
		  } else {
			  isContinue = true;
			  n =pq.poll();
			  // pq의 맨 처음하나를 ignore 처리하고 
			  answer += (n.size)*(n.size);
			  for ( int[] co : n.coord) {
				map[co[0]][co[1]] = ignore;
			  }
			  pq.clear();
		  }
		  map = gravity(map);
		  map = autoclockwise(map);
		  map = gravity(map);
	  }
	  
	  System.out.println(answer);
	}

	private static boolean isRainBow(ArrayList&amp;lt;int[]&amp;gt; coord, int nexty, int nextx) {
		for (int[] is : coord) {if(is[0]==nexty&amp;amp;&amp;amp;is[1]==nextx) return true;}
		return false;
	}

	public static int[][] gravity(int [][] map){
		// 검정블록은 움직이지 않는다.
		int len = map.length;
		int rMap[][] = new int[len][len];
		for(int y=0;y&amp;lt;len;y++) for(int x=0;x&amp;lt;len;x++) rMap[y][x] = ignore;
		
		for(int x=0;x&amp;lt;len;x++) {
			for(int y=len-1;y&amp;gt;=0;y--) {
				if(map[y][x]==ignore || map[y][x]== -1) {
					rMap[y][x] = map[y][x];
				} else {
				  // 일반이거나 무지개 
				  if(y==len-1) {
					  rMap[y][x] = map[y][x];
				  } else {
					  // 맨바닥이면, 그냥 넣고 
					  // 아니면, 검정을 만나거나 다른값을 만날때까지 현재에서 위로 찾음
					  int nexty = y+1;
					  for(;nexty&amp;lt;len;nexty++) {
						  if(rMap[nexty][x]!=ignore) {
							  break;
						  }
					  }
					  rMap[--nexty][x] = map[y][x];
				  }
				}
			}
		}
		return rMap;
	}
	
	public static int[][] autoclockwise(int [][]map){
		// 반시계
		int len = map.length;
		int rMap[][] = new int[len][len];
		
		for(int y=0;y&amp;lt;len;y++) {
			for(int x=0;x&amp;lt;len;x++) {
				rMap[len-1-x][y] = map[y][x];
			}
		}
		return rMap;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1629&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yFJdp/btrDj0CDl1S/7ZLOQXRkKmEJmp1e4wM5L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yFJdp/btrDj0CDl1S/7ZLOQXRkKmEJmp1e4wM5L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yFJdp/btrDj0CDl1S/7ZLOQXRkKmEJmp1e4wM5L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyFJdp%2FbtrDj0CDl1S%2F7ZLOQXRkKmEJmp1e4wM5L0%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;1629&quot; height=&quot;397&quot; data-origin-width=&quot;1629&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/구현,시뮬</category>
      <category>BFS</category>
      <category>구현</category>
      <category>삼성기출</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/236</guid>
      <comments>https://algorithmstudy-mju.tistory.com/236#entry236comment</comments>
      <pubDate>Sun, 29 May 2022 16:33:30 +0900</pubDate>
    </item>
    <item>
      <title>BOJ - 2493 ) 탑</title>
      <link>https://algorithmstudy-mju.tistory.com/150</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U0SEQ/btqGfMnuZ8W/ggHFz50hGghJFRCw36fwt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U0SEQ/btqGfMnuZ8W/ggHFz50hGghJFRCw36fwt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U0SEQ/btqGfMnuZ8W/ggHFz50hGghJFRCw36fwt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU0SEQ%2FbtqGfMnuZ8W%2FggHFz50hGghJFRCw36fwt0%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;1329&quot; height=&quot;783&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bytIlS/btqGebIea1A/k2G9pDKTQ3mzCJQrWUvzrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bytIlS/btqGebIea1A/k2G9pDKTQ3mzCJQrWUvzrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bytIlS/btqGebIea1A/k2G9pDKTQ3mzCJQrWUvzrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbytIlS%2FbtqGebIea1A%2Fk2G9pDKTQ3mzCJQrWUvzrK%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;1329&quot; height=&quot;357&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;357&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;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2493&quot;&gt;https://www.acmicpc.net/problem/2493&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1596555771518&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2493번: 탑&quot; data-og-description=&quot;첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 ��&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2493&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2493&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VkiQw/hyGZZ0cFGa/cDjKeZ2aGbKl4gu3V6tay1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2493&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VkiQw/hyGZZ0cFGa/cDjKeZ2aGbKl4gu3V6tay1/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;2493번: 탑&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 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;p style=&quot;text-align: center;&quot; 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;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Stack 자료구조를 사용하여 현재까지의 탑의 높이를 저장하여&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내 왼쪽의 탑들중 신호를 수신하는 탑을 찾는 문제이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수신되는 탑을 찾기위하여 현재까지 저장된 높이가 내높이보다 크면 add연산을 진행하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작다면 나보다 큰 높이가 나올때까지 poll연산을 진행한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;package algorithm_2022;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class boj_2439 {

	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
	    int n = Integer.parseInt(st.nextToken());
	    int arr[] = new int[n];
	    int index[] = new int[n];
	    Stack&amp;lt;int[]&amp;gt; s = new Stack&amp;lt;&amp;gt;();
	    st = new StringTokenizer(br.readLine());
	    for(int i=0;i&amp;lt;n;i++) {arr[i] = Integer.parseInt(st.nextToken());}
	    
	    for(int i=n-1;i&amp;gt;=0;i--) {
	    	if(s.isEmpty()) {
	    		s.add(new int[] {arr[i],i});
	    		continue;
	    	}
	    	
	    	if(s.peek()[0] &amp;gt; arr[i]) {
	    		s.add(new int[] {arr[i],i});
	    	} else {
	    	   while(s.peek()[0] &amp;lt; arr[i]) {
	    		   index[s.peek()[1]] = i+1;
	    		   s.pop();
	    		   if(s.isEmpty()) break;
	    	   }
	    	   s.add(new int[] {arr[i],i});
	    	}
	    }
	    StringBuilder sb = new StringBuilder();
	    for(int i=0;i&amp;lt;n;i++) {
	      sb.append(index[i]+&quot; &quot;);	
	    } System.out.println(sb.toString());

    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3r9wI/btqGiStqK2M/ESUhkJO4ovUWKfbsEheeT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3r9wI/btqGiStqK2M/ESUhkJO4ovUWKfbsEheeT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3r9wI/btqGiStqK2M/ESUhkJO4ovUWKfbsEheeT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3r9wI%2FbtqGiStqK2M%2FESUhkJO4ovUWKfbsEheeT0%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;1306&quot; height=&quot;102&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/구현,시뮬</category>
      <category>Data structure</category>
      <category>stack</category>
      <author>개발자가될수있을까?</author>
      <guid isPermaLink="true">https://algorithmstudy-mju.tistory.com/150</guid>
      <comments>https://algorithmstudy-mju.tistory.com/150#entry150comment</comments>
      <pubDate>Wed, 11 May 2022 21:30:37 +0900</pubDate>
    </item>
  </channel>
</rss>