<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>SZCODE : 에스제트코드</title>
    <link>https://szcode.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 9 Jun 2026 08:34:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>SZCODE</managingEditor>
    <image>
      <title>SZCODE : 에스제트코드</title>
      <url>https://tistory1.daumcdn.net/tistory/3752460/attach/57947819a79e4a63b685d6ebcefadd27</url>
      <link>https://szcode.tistory.com</link>
    </image>
    <item>
      <title>java 최대공약수 구하기</title>
      <link>https://szcode.tistory.com/138</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;두&amp;nbsp;수의&amp;nbsp;최대공약수(Greatest&amp;nbsp;Common&amp;nbsp;Divisor,&amp;nbsp;GCD)는&amp;nbsp;두&amp;nbsp;수가&amp;nbsp;공통으로&amp;nbsp;가지고&amp;nbsp;있는&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;약수를&amp;nbsp;의미합니다.&amp;nbsp;다시&amp;nbsp;말해,&amp;nbsp;주어진&amp;nbsp;두&amp;nbsp;수&amp;nbsp;중에서&amp;nbsp;더&amp;nbsp;작은&amp;nbsp;수로도&amp;nbsp;나누어떨어지는&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;수를&amp;nbsp;말합니다. &lt;br /&gt;&lt;br /&gt;최대공약수를&amp;nbsp;계산하는&amp;nbsp;방법은&amp;nbsp;여러&amp;nbsp;가지가&amp;nbsp;있습니다.&amp;nbsp;그&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;일반적인&amp;nbsp;방법은&amp;nbsp;&quot;유클리드&amp;nbsp;호제법&quot;을&amp;nbsp;사용하는&amp;nbsp;것입니다.&amp;nbsp;이&amp;nbsp;방법은&amp;nbsp;두&amp;nbsp;수의&amp;nbsp;차이가&amp;nbsp;두&amp;nbsp;수&amp;nbsp;중&amp;nbsp;작은&amp;nbsp;수로&amp;nbsp;나누어떨어질&amp;nbsp;때까지&amp;nbsp;두&amp;nbsp;수를&amp;nbsp;계속&amp;nbsp;나누어주는&amp;nbsp;과정을&amp;nbsp;반복하여&amp;nbsp;최대공약수를&amp;nbsp;찾는&amp;nbsp;방법입니다. &lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;30과&amp;nbsp;45의&amp;nbsp;최대공약수를&amp;nbsp;구하는&amp;nbsp;경우: &lt;br /&gt;&lt;br /&gt;45를&amp;nbsp;30으로&amp;nbsp;나누면&amp;nbsp;나머지가&amp;nbsp;15가&amp;nbsp;남습니다.&amp;nbsp;(45&amp;nbsp;&amp;divide;&amp;nbsp;30&amp;nbsp;=&amp;nbsp;1,&amp;nbsp;나머지&amp;nbsp;15) &lt;br /&gt;이제&amp;nbsp;30을&amp;nbsp;15로&amp;nbsp;나누면&amp;nbsp;나머지가&amp;nbsp;0이&amp;nbsp;됩니다.&amp;nbsp;(30&amp;nbsp;&amp;divide;&amp;nbsp;15&amp;nbsp;=&amp;nbsp;2,&amp;nbsp;나머지&amp;nbsp;0) &lt;br /&gt;나머지가&amp;nbsp;0이&amp;nbsp;되었을&amp;nbsp;때의&amp;nbsp;나누는&amp;nbsp;수,&amp;nbsp;즉&amp;nbsp;15가&amp;nbsp;두&amp;nbsp;수&amp;nbsp;30과&amp;nbsp;45의&amp;nbsp;최대공약수입니다. &lt;br /&gt;&lt;br /&gt;자바에서는&amp;nbsp;gcd&amp;nbsp;메서드를&amp;nbsp;사용하여&amp;nbsp;두&amp;nbsp;수의&amp;nbsp;최대공약수를&amp;nbsp;계산할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;아래는&amp;nbsp;유클리드&amp;nbsp;호제법을&amp;nbsp;사용한&amp;nbsp;최대공약수&amp;nbsp;계산&amp;nbsp;코드&amp;nbsp;예시입니다: &lt;br /&gt;&lt;br /&gt;아래 코드에서 gcd 함수는 두 수의 최대공약수를 계산하는 역할을 합니다. 입력된 두 수의 최대공약수를 구하여 반환하게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1693008482332&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class GCDExample {
    public static int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

    public static void main(String[] args) {
        int num1 = 30;
        int num2 = 45;
        int result = gcd(num1, num2);
        System.out.println(&quot;최대공약수: &quot; + result);  // 출력: 최대공약수: 15
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM/이론</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/138</guid>
      <comments>https://szcode.tistory.com/138#entry138comment</comments>
      <pubDate>Sat, 26 Aug 2023 09:09:06 +0900</pubDate>
    </item>
    <item>
      <title>StringBuilder란</title>
      <link>https://szcode.tistory.com/137</link>
      <description>&lt;pre id=&quot;code_1692745672826&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();

        sb.append(&quot;Hello&quot;);
        sb.append(&quot; &quot;);
        sb.append(&quot;World&quot;);

        System.out.println(sb.toString()); // Output: &quot;Hello World&quot;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder는 Java에서 문자열을 효율적으로 처리하기 위해 제공되는 클래스입니다. 문자열 연결 작업을 수행할 때 String 클래스를 사용하면 새로운 문자열이 생성되기 때문에 메모리 사용량이 많아질 수 있습니다. 하지만 StringBuilder를 사용하면 문자열을 수정하거나 연결할 때 메모리의 재할당이 줄어들어 성능상 이점을 얻을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;StringBuilder는 가변적인 문자열을 생성하며, 기본적으로 내부적으로 버퍼(buffer)를 사용하여 문자열을 관리합니다. 따라서 문자열을 연결하거나 수정할 때마다 새로운 문자열 객체를 생성하는 것보다 훨씬 효율적으로 동작합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #f7f7f8; color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;StringBuilder의 주요 메서드와 동작 방식은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #f7f7f8; color: #374151; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;append(): 문자열을 끝에 추가합니다.&lt;/li&gt;
&lt;li&gt;insert(): 특정 위치에 문자열을 삽입합니다.&lt;/li&gt;
&lt;li&gt;delete(): 특정 범위의 문자열을 삭제합니다.&lt;/li&gt;
&lt;li&gt;replace(): 특정 범위의 문자열을 대체합니다.&lt;/li&gt;
&lt;li&gt;toString(): StringBuilder에 저장된 내용을 String으로 변환하여 반환합니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>ALGORITHM/이론</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/137</guid>
      <comments>https://szcode.tistory.com/137#entry137comment</comments>
      <pubDate>Wed, 23 Aug 2023 08:08:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 감시피하기 java 18428번</title>
      <link>https://szcode.tistory.com/136</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/18428&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/18428&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675848737668&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;18428번: 감시 피하기&quot; data-og-description=&quot;NxN&amp;nbsp;크기의 복도가 있다. 복도는 1x1&amp;nbsp;크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/18428&quot; data-og-url=&quot;https://www.acmicpc.net/problem/18428&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5NfK6/hyRxOGYdHw/IV1IJx1LmykylvDBRArTl1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/DSoXF/hyRxPMDjiT/DkxAizKgk5ye1taBpbEfr0/img.jpg?width=703&amp;amp;height=621&amp;amp;face=0_0_703_621,https://scrap.kakaocdn.net/dn/LaMkZ/hyRxYQkEn9/vheqKGl3NxRLfk7WlQy9eK/img.jpg?width=701&amp;amp;height=618&amp;amp;face=0_0_701_618&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/18428&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/18428&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5NfK6/hyRxOGYdHw/IV1IJx1LmykylvDBRArTl1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/DSoXF/hyRxPMDjiT/DkxAizKgk5ye1taBpbEfr0/img.jpg?width=703&amp;amp;height=621&amp;amp;face=0_0_703_621,https://scrap.kakaocdn.net/dn/LaMkZ/hyRxYQkEn9/vheqKGl3NxRLfk7WlQy9eK/img.jpg?width=701&amp;amp;height=618&amp;amp;face=0_0_701_618');&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;18428번: 감시 피하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;NxN&amp;nbsp;크기의 복도가 있다. 복도는 1x1&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1675848814720&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

class Main{
	static int N;
	static char[][] map;
	static int[][] dir = {{-1,0},{0,-1},{1,0},{0,1}};
	static ArrayList&amp;lt;Pair&amp;gt; list = new ArrayList();
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		map = new char[N][N];
		
		for (int i = 0; i &amp;lt; N; i++) {
			st = new StringTokenizer(br.readLine(),&quot; &quot;);
			for (int j = 0; j &amp;lt; N; j++) {
				map[i][j] = st.nextToken().charAt(0);
			}
		}
	
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				if(map[i][j] == 'S') {
					list.add(new Pair(i,j));
				}
			}
		}

		dfs(0);
		System.out.println(&quot;NO&quot;);
		
		
	
	}
	public static void dfs(int wall) {
		if(wall==3) {
			bfs();
			return;
		}
		
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				if(map[i][j] == 'X') {
					map[i][j] = 'O';
					dfs(wall+1);
					map[i][j] = 'X';
				}
			}
		}
		
	}
	public static void bfs() {
		Queue&amp;lt;Pair&amp;gt; queue = new LinkedList();
		char[][] map_copy = new char[N][N];
		boolean[][] visited = new boolean[N][N];
		
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				map_copy[i][j] = map[i][j];
			}
		}
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				if(map_copy[i][j] == 'T') {
					queue.add(new Pair(i,j));
					visited[i][j] = true;
				}
			}
		}
		
		
		while(!queue.isEmpty()) {
			Pair p = queue.poll();
			
			for (int k = 0; k &amp;lt; 4; k++) {
				int nx = dir[k][0] + p.x;
				int ny = dir[k][1] + p.y;
				
				while(isInside(nx,ny)) {
					if(map_copy[nx][ny] != 'O') {
						visited[nx][ny] = true;			
						nx = nx+dir[k][0];
						ny = ny+dir[k][1];

					}else break;
				}
			}
		}
		
		if(cath(visited)) {
			System.out.println(&quot;YES&quot;);
			System.exit(0);
		}
		
	}
	public static boolean cath(boolean[][] visited) {
		for(Pair p : list) {
			if(visited[p.x][p.y] == true) return false;
		}
		return true;
		
	}
	public static boolean isInside(int x, int y) {
		return x&amp;gt;=0 &amp;amp;&amp;amp; y&amp;gt;=0 &amp;amp;&amp;amp; x&amp;lt;N &amp;amp;&amp;amp; y&amp;lt;N;
	}
}
class Pair{
	int x, y;
	
	public Pair(int x, int y) {
		this.x = x;
		this.y = y;
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/136</guid>
      <comments>https://szcode.tistory.com/136#entry136comment</comments>
      <pubDate>Wed, 8 Feb 2023 20:33:41 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2606번 바이러스 java</title>
      <link>https://szcode.tistory.com/133</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2606&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2606&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670843300652&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;2606번: 바이러스&quot; data-og-description=&quot;첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2606&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2606&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hBdgl/hyQROtO2ft/z6dQHKjlWVUA3rQjzKKTmK/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/2606&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2606&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hBdgl/hyQROtO2ft/z6dQHKjlWVUA3rQjzKKTmK/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;2606번: 바이러스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 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 data-ke-size=&quot;size16&quot;&gt;dfs 활용&lt;/p&gt;
&lt;pre id=&quot;code_1670843314813&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

class Main {
	static int n, v, count;
	static int[][] arr, map;
	static boolean[] visited;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		v = sc.nextInt();
		count = 0;
		arr = new int[v][2];
		map = new int[n + 1][n + 1];
		visited = new boolean[n+1];
		
		for (int i = 0; i &amp;lt; v; i++) {
			arr[i][0] = sc.nextInt();
			arr[i][1] = sc.nextInt();
		}

		for (int i = 0; i &amp;lt; v; i++) {
			int x = arr[i][0];
			int y = arr[i][1];
			map[x][y] = 1;
			map[y][x] = 1;
		}

		dfs(1);
	
		System.out.println(count);
	}

	public static void dfs(int i) {
		visited[i] = true;//1
	
		for (int j = 1; j &amp;lt; n+1; j++) {
			if(!visited[j] &amp;amp;&amp;amp; map[i][j]==1) {
				count++;
				dfs(j);
			}
		}
		
		
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/133</guid>
      <comments>https://szcode.tistory.com/133#entry133comment</comments>
      <pubDate>Mon, 12 Dec 2022 20:08:48 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2798번 블랙잭 java</title>
      <link>https://szcode.tistory.com/132</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2798&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2798&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666657683206&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;2798번: 블랙잭&quot; data-og-description=&quot;첫째 줄에 카드의 개수 N(3 &amp;le;&amp;nbsp;N &amp;le;&amp;nbsp;100)과 M(10 &amp;le;&amp;nbsp;M &amp;le;&amp;nbsp;300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2798&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2798&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4xP3t/hyQltitJXF/cvIxyvTmuosSb0P8sZupPk/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/2798&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2798&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4xP3t/hyQltitJXF/cvIxyvTmuosSb0P8sZupPk/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;2798번: 블랙잭&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 카드의 개수 N(3 &amp;le;&amp;nbsp;N &amp;le;&amp;nbsp;100)과 M(10 &amp;le;&amp;nbsp;M &amp;le;&amp;nbsp;300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순열로 M보다 작은 합의 모든 경우의 수를 따졌다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어렵게 생각하지 않고 풀 수 있을 문제긴 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순열에서 중복 제거를 하면 개선될 수 있을 거 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1666657751604&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int N,M,answer,sum=0,max = 0;
	static int[] arr,output;
	static boolean[] visited;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		st = new StringTokenizer(br.readLine());
		arr = new int[N];
		output = new int[N];
		visited = new boolean[N];
		int r = 3;
		
		for (int i = 0; i &amp;lt; N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		perm(N,0,r);
		System.out.println(answer);
		
	}
	public static void perm(int n, int depth, int r) {
		if(depth == r) {
			for (int i = 0; i &amp;lt; r; i++) {
				sum+= output[i];
			}
			if(sum&amp;lt;=M) {
				if(max&amp;lt;=sum) {
					max = sum;
				}
			}
			answer =max;
			sum = 0;
			
			return;
		}
		for (int i = 0; i &amp;lt; arr.length; i++) {
			if(!visited[i]) {
				visited[i] = true;
				output[depth] = arr[i];
				perm(n,depth+1,r);
				visited[i] = false;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/132</guid>
      <comments>https://szcode.tistory.com/132#entry132comment</comments>
      <pubDate>Tue, 25 Oct 2022 09:26:11 +0900</pubDate>
    </item>
    <item>
      <title>우선순위 큐 (Priority Queue)</title>
      <link>https://szcode.tistory.com/131</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;우선순위 큐란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;높은 우선순위를 가진 원소가 낮은 우선순위를 가진 원소보다 먼저 처리되는 FIFO 구조를 가진 큐입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 힙을 이용하여 구현합니다.&amp;nbsp;시간 복잡도는 O(nlogn)입니다.&lt;/p&gt;</description>
      <category>ALGORITHM/이론</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/131</guid>
      <comments>https://szcode.tistory.com/131#entry131comment</comments>
      <pubDate>Sun, 9 Oct 2022 21:15:52 +0900</pubDate>
    </item>
    <item>
      <title> 블로그에 이모티콘 넣는 법 (이모지)</title>
      <link>https://szcode.tistory.com/130</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; &lt;/span&gt;오늘은 블로그에 이모티콘 넣는 법을 소개합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; &lt;/span&gt;다양한 이모티콘으로 블로그 작성할 때 꾸밀 수 있는 것이 장점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;1️⃣아래 사이트를 진입합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;2️⃣원하는 이모티콘을 드래그합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3️⃣ctrl + c 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;4️⃣작성 중인 글에 ctrl + v를 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;✅그러면 원하는 이모티콘을 불러온 걸 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://getemoji.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://getemoji.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665312195627&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;  Get Emoji &amp;mdash; All Emojis to ✂️ Copy and   Paste  &quot; data-og-description=&quot;✂️&amp;nbsp;Copy and  &amp;nbsp;Paste Emoji   No&amp;nbsp;apps&amp;nbsp;required Emojis are supported on iOS, Android, macOS, Windows, Linux and ChromeOS. Copy and paste emojis for Twitter, Facebook, Slack, Instagram, Snapchat, Slack, GitHub, Instagram, WhatsApp and more.  &quot; data-og-host=&quot;getemoji.com&quot; data-og-source-url=&quot;https://getemoji.com/&quot; data-og-url=&quot;https://getemoji.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://getemoji.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getemoji.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;  Get Emoji &amp;mdash; All Emojis to ✂️ Copy and   Paste  &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;✂️&amp;nbsp;Copy and  &amp;nbsp;Paste Emoji   No&amp;nbsp;apps&amp;nbsp;required Emojis are supported on iOS, Android, macOS, Windows, Linux and ChromeOS. Copy and paste emojis for Twitter, Facebook, Slack, Instagram, Snapchat, Slack, GitHub, Instagram, WhatsApp and more.  &lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getemoji.com&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;</description>
      <category>참고</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/130</guid>
      <comments>https://szcode.tistory.com/130#entry130comment</comments>
      <pubDate>Sun, 9 Oct 2022 19:48:43 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 13904 과제 java</title>
      <link>https://szcode.tistory.com/129</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/13904&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/13904&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664966777351&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;13904번: 과제&quot; data-og-description=&quot;예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/13904&quot; data-og-url=&quot;https://www.acmicpc.net/problem/13904&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dO2jh1/hyP2jA5Xzj/JH1LS1qPqr1FmZrhiCwUV1/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/13904&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/13904&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dO2jh1/hyP2jA5Xzj/JH1LS1qPqr1FmZrhiCwUV1/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;13904번: 과제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.&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;pre id=&quot;code_1664966788832&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

class Main{
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		int[][] array = new int[N][2];
		
		StringTokenizer st = null;
		for (int i = 0; i &amp;lt; N; i++) {
			st = new StringTokenizer(br.readLine());
			array[i][0] = Integer.parseInt(st.nextToken());
			array[i][1] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(array,new Comparator&amp;lt;int[]&amp;gt;() {
			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[0]-o2[0];
			}
		});
		

		PriorityQueue&amp;lt;Integer&amp;gt; pq = new PriorityQueue();
		int sum = 0;
		for(int i = 0; i&amp;lt;N; i++) {
			pq.add(array[i][1]);
			while(!pq.isEmpty() &amp;amp;&amp;amp; pq.size()&amp;gt;array[i][0])
				pq.poll();
		}
		while(!pq.isEmpty()) {
			sum+= pq.poll();
		}
		
		System.out.println(sum);
		
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/129</guid>
      <comments>https://szcode.tistory.com/129#entry129comment</comments>
      <pubDate>Wed, 5 Oct 2022 19:46:34 +0900</pubDate>
    </item>
    <item>
      <title>JAVA 2차원 시계방향으로 90도 돌리기</title>
      <link>https://szcode.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왼쪽 배열을 시계방향으로 돌리면 오른쪽과 같습니다. 색깔대로 &lt;/b&gt;&lt;b&gt;규칙을 확인해보면 다음과 같습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsGNSf/btryFLDc5DZ/FkUduxF58bvxmzhw7BcXe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsGNSf/btryFLDc5DZ/FkUduxF58bvxmzhw7BcXe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsGNSf/btryFLDc5DZ/FkUduxF58bvxmzhw7BcXe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsGNSf%2FbtryFLDc5DZ%2FFkUduxF58bvxmzhw7BcXe1%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;508&quot; height=&quot;82&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이제 시계방향으로 직접적으로 돌리기 위해서 배열의 좌표 위치를 활용하겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0Y4aE/btryLzVslue/M484WzVaUhgHlXOJ6SUiG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0Y4aE/btryLzVslue/M484WzVaUhgHlXOJ6SUiG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0Y4aE/btryLzVslue/M484WzVaUhgHlXOJ6SUiG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0Y4aE%2FbtryLzVslue%2FM484WzVaUhgHlXOJ6SUiG0%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;225&quot; height=&quot;86&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원래 위치 -&amp;gt; 시계방향 90도 돌린 후 위치는 이렇게 됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;돌린 후 배열의 행은 원래 배열의 열과 같고&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;돌린 후 배열의 열은 (원래 배열의 최대 인덱스 - 원래 배열의 행)과 같다는 것을 알 수 있습니다. &lt;/span&gt;여기서는 최대 인덱스가 2입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[&lt;span style=&quot;color: #006dd7;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;,2]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[0,&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;,2]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[0,&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;,2]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-0 = 2&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[&lt;span style=&quot;color: #006dd7;&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;,1]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[1,&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;,1]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[1,&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;,1]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-1= 1&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[&lt;span style=&quot;color: #006dd7;&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;,0]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[2,&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;,0]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[2,&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;] -&amp;gt; [&lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;,0]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 = 0&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649343268733&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class test{
	public static void main(String[] args) {
		int[][] map = {{1,2,3},{4,5,6},{7,8,9}};
		int[][] map_copy = new int[map.length][map.length];
		
		for (int i = 0; i &amp;lt; map.length; i++) {
			for (int j = 0; j &amp;lt; map.length; j++) {
				map_copy[i][j] = map[map.length-1-j][i];
                
				//map_copy[i][j] = map[j][map.length-1-i];//반 시계 방향 90도
			}
		}	
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;관련 문제 : &lt;a href=&quot;https://www.acmicpc.net/problem/20058&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/20058&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>ALGORITHM/이론</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/128</guid>
      <comments>https://szcode.tistory.com/128#entry128comment</comments>
      <pubDate>Thu, 7 Apr 2022 23:54:43 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 마법사 상어와 비바라기 java 21610번</title>
      <link>https://szcode.tistory.com/127</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/21610&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/21610&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649165797128&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;21610번: 마법사 상어와 비바라기&quot; data-og-description=&quot;마법사 상어는&amp;nbsp;파이어볼,&amp;nbsp;토네이도, 파이어스톰, 물복사버그&amp;nbsp;마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/21610&quot; data-og-url=&quot;https://www.acmicpc.net/problem/21610&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPg7RO/hyNVR1qFU6/eqGGmcHmro4l6e5qf0O3JK/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/21610&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/21610&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPg7RO/hyNVR1qFU6/eqGGmcHmro4l6e5qf0O3JK/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;21610번: 마법사 상어와 비바라기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;마법사 상어는&amp;nbsp;파이어볼,&amp;nbsp;토네이도, 파이어스톰, 물복사버그&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표 : &lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;M번의 이동이 모두 끝난 후 바구니에 들어있는 물의 양의 합을 구해보자.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 풀이 :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;map 배열 : 비바라기 크기가 N*N인 격자&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;visited 배열 : 구름의 위치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;arr 배열 : 방향 d와 거리 s를 담은 이동명령 배열&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;dir 배열 : &lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;1부터 순서대로&amp;nbsp;&amp;larr;,&amp;nbsp;↖,&amp;nbsp;&amp;uarr;,&amp;nbsp;↗,&amp;nbsp;&amp;rarr;,&amp;nbsp;↘,&amp;nbsp;&amp;darr;,&amp;nbsp;↙&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;list : 비구름&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pair 클래스 : list를 쌍으로 받기 위한 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;모든 구름이 di&lt;span&gt;&amp;nbsp;&lt;/span&gt;방향으로 si칸 이동한다.&lt;/li&gt;
&lt;li&gt;각 구름에서 비가 내려&amp;nbsp;구름이 있는 칸의 바구니에 저장된 물의 양이 1 증가한다.&lt;/li&gt;
&lt;li&gt;구름이 모두 사라진다.&lt;/li&gt;
&lt;li&gt;2에서 물이 증가한 칸 (r, c)에 물복사버그 마법을 시전한다. 물복사버그 마법을 사용하면, 대각선 방향으로 거리가 1인&amp;nbsp;칸에 물이 있는 바구니의 수만큼 (r, c)에 있는 바구니의 물이 양이 증가한다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이때는 이동과 다르게 경계를 넘어가는 칸은 대각선 방향으로 거리가 1인 칸이 아니다.&lt;/li&gt;
&lt;li&gt;예를 들어, (N, 2)에서 인접한 대각선 칸은 (N-1, 1), (N-1, 3)이고, (N, N)에서 인접한 대각선 칸은 (N-1, N-1)뿐이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;바구니에 저장된 물의 양이 2 이상인 모든 칸에 구름이 생기고, 물의 양이 2 줄어든다. 이때 구름이 생기는 칸은 3에서 구름이 사라진 칸이 아니어야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1~5번 규칙대로 함수를 이용해 풀어주었습니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이때, '3. 구름이 모두 사라진다'는 '4. 물복사버그 마법' 이후에 해주었습니다. 그 이유는 비구름의 위치를 알아야하기 때문입니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649166005192&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
class Pair{
	int r, c;
	public Pair(int r, int c) {
		this.r = r;
		this.c = c;
	}
}
class Solution {
	static int N, M;
	static int[][] map;
	static boolean[][] visited;
	static int[][] arr;
	static int[][] dir = { { 0, 0 }, { 0, -1 }, { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, 1 }, { 1, 1 }, { 1, 0 },
			{ 1, -1 } };
	static ArrayList&amp;lt;Pair&amp;gt; list = new ArrayList(); //구름
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), &quot; &quot;);
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		map = new int[N][N];
		arr = new int[M][2];
		
		for (int i = 0; i &amp;lt; N; i++) {
			st = new StringTokenizer(br.readLine(),&quot; &quot;);
			for (int j = 0; j &amp;lt; N; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}

		for (int i = 0; i &amp;lt; M; i++) {
			st = new StringTokenizer(br.readLine(),&quot; &quot;);
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
		}//end of input
		
		//처음 구름 위치
		list.add(new Pair(N-2,0));
		list.add(new Pair(N-1,0));
		list.add(new Pair(N-2,1));
		list.add(new Pair(N-1,1));
		
		for (int i = 0; i &amp;lt; M; i++) {
			visited = new boolean[N][N];
			int d = arr[i][0];
			int s = arr[i][1];
			movecloud(d,s);
			rain();
			createcloud();
		}
		
		System.out.println(count());
		
	}
	//1. 모든 구름이 d 방향으로 s칸 이동한다.
	public static void movecloud(int d, int s) {
		for(Pair p : list) {
			int x = (p.r + N + dir[d][0] * s % N) % N;
			int y = (p.c + N + dir[d][1] * s % N) % N;
			
			visited[x][y] = true;
			//2. 각 구름에서 비가 내려 구름이 있는 칸의 바구니에 저장된 물의 양이 1 증가한다.
			map[x][y] += 1;
			p.r = x;
			p.c = y;
			
		}
	}

	//4. 대각선 방향으로 거리가 1인 칸에 물이 있는 바구니의 수만큼 (r, c)에 있는 바구니의 물이 양이 증가한다.
	public static void rain() {
		for(Pair p : list) {
			int count = 0, x = 0, y = 0;
		
			for(int i = 2; i&amp;lt;=8; i+=2) { 
				x = p.r + dir[i][0];
				y = p.c + dir[i][1];
				
				if(isInside(x,y) &amp;amp;&amp;amp; map[x][y] &amp;gt; 0) {
					count++;
				}
			}
			map[p.r][p.c] += count;
			
		}
		//3. 구름이 모두 사라진다.
		list = new ArrayList();
	}
	//5. 바구니에 저장된 물의 양이 2 이상인 모든 칸에 구름이 생기고, 물의 양이 2 줄어든다. 이때 구름이 생기는 칸은 3에서 구름이 사라진 칸이 아니어야 한다.
	public static void createcloud() {
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				
				if(map[i][j] &amp;gt;= 2 &amp;amp;&amp;amp; !visited[i][j]) {
					map[i][j] -=2;
					list.add(new Pair(i,j));
				}
			}
		}
	}
	
	//M번의 이동이 모두 끝난 후 바구니에 들어있는 물의 양의 합
	public static int count() {
		int count = 0;
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; N; j++) {
				count+=map[i][j];
			}
		}
		return count;
	}
	//배열의 범위를 넘어가지 않는지 확인
	public static boolean isInside(int x, int y) {
		return x&amp;gt;=0 &amp;amp;&amp;amp; y&amp;gt;=0 &amp;amp;&amp;amp; x&amp;lt;N &amp;amp;&amp;amp; y&amp;lt;N;
	}
	
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오</category>
      <author>SZCODE</author>
      <guid isPermaLink="true">https://szcode.tistory.com/127</guid>
      <comments>https://szcode.tistory.com/127#entry127comment</comments>
      <pubDate>Tue, 5 Apr 2022 22:52:28 +0900</pubDate>
    </item>
  </channel>
</rss>