<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발윗미</title>
    <link>https://unie2.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 10 Aug 2026 07:54:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개발윗미</managingEditor>
    <image>
      <title>개발윗미</title>
      <url>https://tistory1.daumcdn.net/tistory/4829236/attach/4a1d46066d6244949b96ec5c0380a54f</url>
      <link>https://unie2.tistory.com</link>
    </image>
    <item>
      <title>백준(JAVA) 15649번 N과 M (1) 풀이</title>
      <link>https://unie2.tistory.com/1380</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java로 구현한 15649번 N과 M (1) 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15649&quot;&gt;https://www.acmicpc.net/problem/15649&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667644594246&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;15649번: N과 M (1)&quot; data-og-description=&quot;한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15649&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15649&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jCfna/hyQtxd8Er9/5jEMKMm0MlhdsvZQdIE15k/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/15649&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15649&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jCfna/hyQtxd8Er9/5jEMKMm0MlhdsvZQdIE15k/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;15649번: N과 M (1)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667644594247&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int[] data = new int[N];
		for (int i=1; i&amp;lt;N+1; i++)
			data[i-1] = i;
		
		int[] output = new int[N];
		boolean[] visited = new boolean[N];
		permutations(data, output, visited, 0, N, M);
	}
	
	public static void permutations(int[] arr, int[] output, boolean visited[], int depth, int n, int r) {
		if (depth == r) {
			print(output, r);
			return;
		}
		
		for (int i=0; i&amp;lt;n; i++) {
			if (!visited[i]) {
				visited[i] = true;
				output[depth] = arr[i];
				permutations(arr, output, visited, depth+1, n, r);
				visited[i] = false;
			}
		}
	}
	
	public static void print(int[] arr, int r) {
		for (int i=0; i&amp;lt;r; i++)
			System.out.print(arr[i] + &quot; &quot;);
		System.out.println();
	}
}&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;1. N과 M을 입력받아 1부터 N까지의 수를 data 배열에 정의한다.&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;2. 순열(permutations)을 통해 각 경우의 수마다 M개의 수를 도출해내 해당 수들을 출력한다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/백트래킹</category>
      <category>java</category>
      <category>N과 M (1)</category>
      <category>Silver</category>
      <category>백준 15649</category>
      <category>백트래킹</category>
      <category>자바</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1380</guid>
      <comments>https://unie2.tistory.com/1380#entry1380comment</comments>
      <pubDate>Sat, 5 Nov 2022 19:38:03 +0900</pubDate>
    </item>
    <item>
      <title>백준(Python) 15649번 N과 M (1) 풀이</title>
      <link>https://unie2.tistory.com/1379</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Python으로 구현한 15649번 N과 M (1) 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15649&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/15649&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667643874820&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;15649번: N과 M (1)&quot; data-og-description=&quot;한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15649&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15649&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jCfna/hyQtxd8Er9/5jEMKMm0MlhdsvZQdIE15k/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/15649&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15649&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jCfna/hyQtxd8Er9/5jEMKMm0MlhdsvZQdIE15k/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;15649번: N과 M (1)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667643878187&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n, m = map(int, input().split())

def permutations(arr, r) :
    for i in range(len(arr)) :
        if r == 1 :
            yield [arr[i]]
        else :
            for next in permutations(arr[:i] + arr[i+1:], r-1) :
                yield [arr[i]] + next

data = [i for i in range(1, n + 1)]
for value in permutations(data, m) :
    print(* value)&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;1. n과 m을 입력받아 1부터 n까지의 수를 data 리스트에 정의한다.&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;2. 순열(permutations)을 통해 각 경우의 수마다 m개의 수를 도출해내 해당 수들을 출력한다.&lt;/p&gt;</description>
      <category>백준(Python) 풀이/백트래킹</category>
      <category>N과 M (1)</category>
      <category>Python</category>
      <category>Silver</category>
      <category>백준 15649</category>
      <category>백트래킹</category>
      <category>파이썬</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1379</guid>
      <comments>https://unie2.tistory.com/1379#entry1379comment</comments>
      <pubDate>Sat, 5 Nov 2022 19:26:16 +0900</pubDate>
    </item>
    <item>
      <title>백준(JAVA) 3085번 사탕 게임 풀이</title>
      <link>https://unie2.tistory.com/1378</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java로 구현한 3085번 사탕 게임 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot;&gt;https://www.acmicpc.net/problem/3085&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667642635706&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;3085번: 사탕 게임&quot; data-og-description=&quot;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xfLkn/hyQtBOmgE4/X2FYXNoaJZ6CKtQrK1HY40/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xfLkn/hyQtBOmgE4/X2FYXNoaJZ6CKtQrK1HY40/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;3085번: 사탕 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667642635707&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
import java.io.*;

public class Main {
	static int result = 0;
	static int n;
	static char[][] data;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		data = new char[n][n];
		for (int i=0; i&amp;lt;n; i++) {
			String st = br.readLine();
			for (int j=0; j&amp;lt;n; j++) {
				data[i][j] = st.charAt(j);
			}
		}
		
		for (int i=0; i&amp;lt;n; i++) {
			for (int j=0; j&amp;lt;n-1; j++) {
				// 두 원소가 다르다면 (가로 기준)
				if (data[i][j] != data[i][j+1]) {
					// swap
					char temp = data[i][j];
					data[i][j] = data[i][j+1];
					data[i][j+1] = temp;
					check_col(); // 가로 확인
					check_row(); // 세로 확인
					
					temp = data[i][j];
					data[i][j] = data[i][j+1];
					data[i][j+1] = temp;
				}
				
				if (data[j][i] != data[j+1][i]) {
					char temp = data[j][i];
					data[j][i] = data[j+1][i];
					data[j+1][i] = temp;
					check_col();
					check_row();
					
					temp = data[j][i];
					data[j][i] = data[j+1][i];
					data[j+1][i] = temp;
				}
			}
		}
		
		System.out.println(result);
	}
	
	public static void check_col() {
		for (int k=0; k&amp;lt;n; k++) {
			int length = 1;
			for (int l=0; l&amp;lt;n-1; l++) {
				if (data[k][l] == data[k][l+1]) {
					length ++;
					result = Math.max(result, length);
				} else
					length = 1;
			}
		}
	}
	
	public static void check_row() {
		for (int k=0; k&amp;lt;n; k++) {
			int length = 1;
			for (int l=0; l&amp;lt;n-1; l++) {
				if (data[l][k] == data[l+1][k]) {
					length ++;
					result = Math.max(result, length);
				} else 
					length = 1;
			}
		}
	}
}&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;1. n x n 크기의 사탕을 입력받아 2차원 data 배열에 정의한다.&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;2. 이중 for문을 돌려 가로, 세로 각 상황을 확인하여 만약 두 원소가 다르다면 두 값을 교환해주고 최대값을 구하기 위해 check_col() 함수와 check_row() 함수를 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이후 다른 경우의 수도 확인해봐야 하므로 교환했던 두 값을 다시 원래대로 교환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. check_col() 함수와 check_row() 함수는 각 가로와 세로를 기준으로 연속 부분의 최대값을 구해 result를 갱신해나간다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/브루트포스 알고리즘</category>
      <category>java</category>
      <category>Silver</category>
      <category>구현</category>
      <category>백준 3085</category>
      <category>브루트포스 알고리즘</category>
      <category>사탕 게임</category>
      <category>자바</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1378</guid>
      <comments>https://unie2.tistory.com/1378#entry1378comment</comments>
      <pubDate>Sat, 5 Nov 2022 19:05:06 +0900</pubDate>
    </item>
    <item>
      <title>백준(Python) 3085번 사탕 게임 풀이</title>
      <link>https://unie2.tistory.com/1377</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Python으로 구현한 3085번 사탕 게임 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/3085&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667641614753&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;3085번: 사탕 게임&quot; data-og-description=&quot;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3085&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xfLkn/hyQtBOmgE4/X2FYXNoaJZ6CKtQrK1HY40/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xfLkn/hyQtBOmgE4/X2FYXNoaJZ6CKtQrK1HY40/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;3085번: 사탕 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667641627662&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
data = [list(input()) for _ in range(n)]

result = 0

def check_col() :
    global result

    for k in range(n) :
        length = 1
        for l in range(n-1) :
            if data[k][l] == data[k][l+1] :
                length += 1
                result = max(result, length)
            else :
                length = 1

def check_row() :
    global result

    for k in range(n) :
        length = 1
        for l in range(n-1) :
            if data[l][k] == data[l+1][k] :
                length += 1
                result = max(result, length)
            else :
                length = 1

for i in range(n) :
    for j in range(n-1) :
        # 두 원소가 다르다면
        if data[i][j] != data[i][j+1] :
            # swap
            data[i][j], data[i][j+1] = data[i][j+1], data[i][j]
            check_col() # 가로 확인
            check_row() # 세로 확인
            data[i][j], data[i][j+1] = data[i][j+1], data[i][j]
        # 두 원소가 다르다면
        if data[j][i] != data[j+1][i] :
            data[j][i], data[j+1][i] = data[j+1][i], data[j][i]
            check_col()
            check_row()
            data[j][i], data[j + 1][i] = data[j + 1][i], data[j][i]

print(result)&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;1. n x n 크기의 사탕을 입력받아 2차원 data 리스트에 정의한다.&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;2. 이중 for문을 돌려 가로, 세로 각 상황을 확인하여 만약 두 원소가 다르다면 두 값을 교환해주고 최대값을 구하기 위해 check_col() 함수와 check_row() 함수를 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이후 다른 경우의 수도 확인해봐야 하므로 교환했던 두 값을 다시 원래대로 교환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. check_col() 함수와 check_row() 함수는 각 가로와 세로를 기준으로 연속 부분의 최대값을 구해 result를 갱신해나간다.&lt;/p&gt;</description>
      <category>백준(Python) 풀이/브루트포스 알고리즘</category>
      <category>Python</category>
      <category>Silver</category>
      <category>구현</category>
      <category>백준 3085</category>
      <category>브루트포스 알고리즘</category>
      <category>사탕 게임</category>
      <category>파이썬</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1377</guid>
      <comments>https://unie2.tistory.com/1377#entry1377comment</comments>
      <pubDate>Sat, 5 Nov 2022 18:53:44 +0900</pubDate>
    </item>
    <item>
      <title>백준(JAVA) 2309번 일곱 난쟁이 풀이</title>
      <link>https://unie2.tistory.com/1376</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java로 구현한 2309번 일곱 난쟁이 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot;&gt;https://www.acmicpc.net/problem/2309&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667638219238&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2309번: 일곱 난쟁이&quot; data-og-description=&quot;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xTENy/hyQtsX10jk/yGcefZq0CuOGGtmORzG29k/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2309&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xTENy/hyQtsX10jk/yGcefZq0CuOGGtmORzG29k/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2309번: 일곱 난쟁이&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667638219239&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int[] data = new int[9];
		
		int sum_value = 0;
		for (int i=0; i&amp;lt;9; i++) {
			data[i] = sc.nextInt();
			sum_value += data[i];
		}
		
		Arrays.sort(data);
		int a = 0;
		int b = 0;
		
		boolean flag = true;
		for (int i=0; i&amp;lt;8; i++) {
			for (int j=i+1; j&amp;lt;9; j++) {
				if (sum_value - data[i] - data[j] == 100) {
					a = data[i];
					b = data[j];
					flag = false;
					break;
				}
			}
			
			if (flag == false)
				break;
		}
		
		for (int da : data) {
			if (da == a || da == b)
				continue;
			System.out.println(da);
		}
	}
}&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;1. 입력된 9개의 값들을 data 배열에 정의하고, 각 수를 sum_value에 누적하여 9개 수의 합을 구한다.&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;2. data 배열을 오름차순으로 정렬하고, 제외시킬 두 명의 난쟁이 키를 담을 a와 b를 초기화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. data 배열에서 값을 차례대로 하나씩 타겟으로 잡고, 해당 인덱스 다음 수부터 확인하여 만약 sum_value에서 타겟 data[i]와 data[j]을 뺀 값이 100일 경우&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;a에 data[i]를, b에 data[j]를 할당한 후 이중 for문을 벗어난다.&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;4. data 배열의 값을 하나씩 출력하는데, 만약 그 값이 a이거나 b일 경우 제외시켜야 하므로 continue한다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/브루트포스 알고리즘</category>
      <category>BRONZE</category>
      <category>java</category>
      <category>백준 2309</category>
      <category>브루트포스 알고리즘</category>
      <category>일곱 난쟁이</category>
      <category>자바</category>
      <category>정렬</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1376</guid>
      <comments>https://unie2.tistory.com/1376#entry1376comment</comments>
      <pubDate>Sat, 5 Nov 2022 17:57:14 +0900</pubDate>
    </item>
    <item>
      <title>백준(Python) 2309번 일곱 난쟁이 풀이</title>
      <link>https://unie2.tistory.com/1375</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Python으로 구현한 2309번 일곱 난쟁이 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2309&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667637203777&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2309번: 일곱 난쟁이&quot; data-og-description=&quot;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2309&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xTENy/hyQtsX10jk/yGcefZq0CuOGGtmORzG29k/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2309&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2309&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xTENy/hyQtsX10jk/yGcefZq0CuOGGtmORzG29k/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2309번: 일곱 난쟁이&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667637215530&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def combinations(arr, r) :
    for i in range(len(arr)) :
        if r == 1 :
            yield [arr[i]]
        else :
            for next in combinations(arr[i+1:], r-1) :
                yield [arr[i]] + next

data = [int(input()) for _ in range(9)]

result = []
for value in combinations(data, 7) :
    if sum(value) == 100 :
        result = sorted(value)
        break

for res in result :
    print(res)&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;1. 입력된 9개의 값들을 data 리스트에 정의하고, 조합(combinations)을 통해 data 리스트에서 7개의 수를 도출해낸다.&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;2. 만약 도출해낸 7개의 수의 합이 100일 경우 오름차순으로 정렬하여 result에 할당하고 break 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 최종적으로 result 리스트에 존재하는 값들을 하나씩 출력한다.&lt;/p&gt;</description>
      <category>백준(Python) 풀이/브루트포스 알고리즘</category>
      <category>BRONZE</category>
      <category>Python</category>
      <category>백준 2309</category>
      <category>브루트포스 알고리즘</category>
      <category>일곱 난쟁이</category>
      <category>정렬</category>
      <category>파이썬</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1375</guid>
      <comments>https://unie2.tistory.com/1375#entry1375comment</comments>
      <pubDate>Sat, 5 Nov 2022 17:39:20 +0900</pubDate>
    </item>
    <item>
      <title>백준(JAVA) 1655번 가운데를 말해요 풀이</title>
      <link>https://unie2.tistory.com/1374</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java으로 구현한 1655번 가운데를 말해요 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1655&quot;&gt;https://www.acmicpc.net/problem/1655&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667011012422&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;1655번: 가운데를 말해요&quot; data-og-description=&quot;첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1655&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1655&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k1k5U/hyQmCIjzd8/vvKgG1ZHweX4KQjNKYCtTk/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/1655&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1655&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k1k5U/hyQmCIjzd8/vvKgG1ZHweX4KQjNKYCtTk/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;1655번: 가운데를 말해요&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667011012422&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n = Integer.parseInt(br.readLine());
		PriorityQueue&amp;lt;Integer&amp;gt; leftheap = new PriorityQueue&amp;lt;&amp;gt;();
		PriorityQueue&amp;lt;Integer&amp;gt; rightheap = new PriorityQueue&amp;lt;&amp;gt;();
		
		for (int i=0; i&amp;lt;n; i++) {
			int value = Integer.parseInt(br.readLine());
			if (leftheap.size() == rightheap.size())
				leftheap.add(-value);
			else
				rightheap.add(value);
			
			if (!rightheap.isEmpty() &amp;amp;&amp;amp; -leftheap.peek() &amp;gt; rightheap.peek()) {
				int min_value = rightheap.poll();
				int max_value = -leftheap.poll();
				leftheap.add(-min_value);
				rightheap.add(max_value);
			}
			
			bw.write(-leftheap.peek() + &quot;\n&quot;);
		}
		
		bw.flush();
		bw.close();
		br.close();
	}
}&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;1. 중간 값을 기준으로 하여 더 작은 값들은 leftheap에, 더 큰 값들은 rightheap에 구성될 수 있도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이때&amp;nbsp; PriorityQueue의 default 구성은 오름차순 형태이므로 leftheap에 들어가는 값의 경우 (-)를 붙여 최대힙 형태로 구성될 수 있도록 한다.&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;2. 값을 하나씩 입력받고, 만약 leftheap의 길이와 rightheap의 길이가 같을 경우 해당 값을 leftheap에 삽입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 반면 두 길이가 다를 경우 길이를 맞춰주기 위해 해당 값을 rightheap에 삽입한다.&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;4. 만약 rightheap에 값이 있고 leftheap의 루트가 rightheap의 루트보다 크면 루트 값을 서로 바꿔준다.&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;5. 구성된 heap에서 중간 값(-leftheap.peek())을 도출해내 bw에 추가하고, n개의 값에 대한 작업을 모두 마치면 최종적으로 bw를 출력한다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/자료 구조</category>
      <category>gold</category>
      <category>java</category>
      <category>가운데를 말해요</category>
      <category>백준 1655</category>
      <category>우선순위 큐</category>
      <category>자료 구조</category>
      <category>자바</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1374</guid>
      <comments>https://unie2.tistory.com/1374#entry1374comment</comments>
      <pubDate>Sat, 29 Oct 2022 11:42:32 +0900</pubDate>
    </item>
    <item>
      <title>백준(Python) 1655번 가운데를 말해요 풀이</title>
      <link>https://unie2.tistory.com/1373</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Python으로 구현한 1655번 가운데를 말해요 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1655&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1655&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667009315432&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;1655번: 가운데를 말해요&quot; data-og-description=&quot;첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1655&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1655&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k1k5U/hyQmCIjzd8/vvKgG1ZHweX4KQjNKYCtTk/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/1655&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1655&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k1k5U/hyQmCIjzd8/vvKgG1ZHweX4KQjNKYCtTk/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;1655번: 가운데를 말해요&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667009320277&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# PyPy3 정답
import heapq

n = int(input())
leftheap = []
rightheap = []
result = []

for _ in range(n) :
    value = int(input())
    if len(leftheap) == len(rightheap) :
        heapq.heappush(leftheap, (-value, value))
    else :
        heapq.heappush(rightheap, (value, value))

    if rightheap and leftheap[0][1] &amp;gt; rightheap[0][0] :
        min_value = heapq.heappop(rightheap)[0]
        max_value = heapq.heappop(leftheap)[1]
        heapq.heappush(leftheap, (-min_value, min_value))
        heapq.heappush(rightheap, (max_value, max_value))

    result.append(leftheap[0][1])

for res in result :
    print(res)&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;1. 중간 값을 기준으로 하여 더 작은 값들은 leftheap에, 더 큰 값들은 rightheap에 구성될 수 있도록 한다.&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;2. 값을 하나씩 입력받고, 만약 leftheap의 길이와 rightheap의 길이가 같을 경우 해당 값을 leftheap에 삽입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 반면 두 길이가 다를 경우 길이를 맞춰주기 위해 해당 값을 rightheap에 삽입한다.&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;4. 만약 rightheap에 값이 있고 leftheap의 루트가 rightheap의 루트보다 크면 루트 값을 서로 바꿔준다.&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;5. 구성된 heap에서 중간 값(leftheap[0][1])을 도출해내 result 리스트에 추가하고, n개의 값에 대한 작업을 모두 마치면 최종적으로 result에 담겨 있는 요소들을 출력한다.&lt;/p&gt;</description>
      <category>백준(Python) 풀이/자료 구조</category>
      <category>gold</category>
      <category>Python</category>
      <category>가운데를 말해요</category>
      <category>백준 1655</category>
      <category>우선순위 큐</category>
      <category>자료 구조</category>
      <category>파이썬</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1373</guid>
      <comments>https://unie2.tistory.com/1373#entry1373comment</comments>
      <pubDate>Sat, 29 Oct 2022 11:12:58 +0900</pubDate>
    </item>
    <item>
      <title>백준(JAVA) 13305번 주유소 풀이</title>
      <link>https://unie2.tistory.com/1372</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java으로 구현한 13305번 주유소 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/13305&quot;&gt;https://www.acmicpc.net/problem/13305&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667005254444&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;13305번: 주유소&quot; data-og-description=&quot;표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/13305&quot; data-og-url=&quot;https://www.acmicpc.net/problem/13305&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rnxjT/hyMJHzfcc1/P0AoxRJTZVJmdTKOaQIY61/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/13305&quot; data-source-url=&quot;https://www.acmicpc.net/problem/13305&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rnxjT/hyMJHzfcc1/P0AoxRJTZVJmdTKOaQIY61/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;13305번: 주유소&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 &amp;le; N &amp;le; 100,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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1667005254448&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		int n = Integer.parseInt(br.readLine());
		long[] distance = new long[n-1];
		long[] price = new long[n];
		
		st = new StringTokenizer(br.readLine());
		for (int i=0; i&amp;lt;n-1; i++)
			distance[i] = Long.parseLong(st.nextToken());
		
		st = new StringTokenizer(br.readLine());
		for (int i=0; i&amp;lt;n; i++)
			price[i] = Long.parseLong(st.nextToken());
		
		long curr = price[0];
		long result = 0;
		for (int i=0; i&amp;lt;n-1; i++) {
			if (curr &amp;gt; price[i])
				curr = price[i];
			result += curr * distance[i];
		}
		
		System.out.println(result);
		
	}
}&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;1. 첫번째 주유소는 무조건 가야하므로 curr에 첫번째 주유소의 리터당 가격을 할당한다.&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;2. n - 1까지의 범위로 반복문을 수행하는데, 현재 확인하고 있는 가격과 curr을 비교한 후, curr이 더 크다면 현재 확인하고 있는 가격으로 갱신한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. curr에 현재까지의 최소 비용이 담겨져 있으므로, 현재 확인하고 있는 거리 값(distance[i])에 curr을 곱하여 result에 누적한다.&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;4. 반복문이 종료되면 최종적으로 result를 출력한다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/그리디 알고리즘</category>
      <category>java</category>
      <category>Silver</category>
      <category>그리디 알고리즘</category>
      <category>백준 13305</category>
      <category>자바</category>
      <category>주유소</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1372</guid>
      <comments>https://unie2.tistory.com/1372#entry1372comment</comments>
      <pubDate>Sat, 29 Oct 2022 10:02:34 +0900</pubDate>
    </item>
    <item>
      <title>백준(JAVA) 9576번 책 나눠주기 풀이</title>
      <link>https://unie2.tistory.com/1371</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;Java로 구현한 9576번 책 나눠주기 문제 풀이입니다.&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; color: #555555;&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9576&quot;&gt;https://www.acmicpc.net/problem/9576&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665796917561&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;9576번: 책 나눠주기&quot; data-og-description=&quot;백준이는 방 청소를 하면서 필요 없는 전공 서적을 사람들에게 나눠주려고 한다. 나눠줄 책을 모아보니 총 N권이었다. 책이 너무 많기 때문에 백준이는 책을 구분하기 위해 각각 1부터 N까지의 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9576&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9576&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wPujx/hyQaBVga6m/V4Yk2zmsfof83emcZwKu41/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/9576&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9576&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wPujx/hyQaBVga6m/V4Yk2zmsfof83emcZwKu41/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;9576번: 책 나눠주기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;백준이는 방 청소를 하면서 필요 없는 전공 서적을 사람들에게 나눠주려고 한다. 나눠줄 책을 모아보니 총 N권이었다. 책이 너무 많기 때문에 백준이는 책을 구분하기 위해 각각 1부터 N까지의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1665796917561&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		for (int i=0; i&amp;lt;t; i++) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			boolean[] flag = new boolean[n+1];
			List&amp;lt;int[]&amp;gt; data = new ArrayList&amp;lt;&amp;gt;();
			for (int j=0; j&amp;lt;m; j++) {
				int a = sc.nextInt();
				int b = sc.nextInt();
				int[] temp = {a, b};
				data.add(temp);
			}
			
			Collections.sort(data, new Comparator&amp;lt;int[]&amp;gt;() {
				@Override
				public int compare(int[] o1, int[] o2) {
					if (o1[1] == o2[1])
						return o1[0] - o2[0];
					return o1[1] - o2[1];
				}
			});
			
			int result = 0;
			while (!data.isEmpty()) {
				int[] pop = data.remove(0);
				for (int k=pop[0]; k&amp;lt;=pop[1]; k++) {
					if (flag[k] == false) {
						flag[k] = true;
						result ++;
						break;
					}
				}
			}
			
			System.out.println(result);
		}
	}
}&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;1. 각 테스트케이스마다 n과 m을 입력받고, 각 책의 보유 여부를 담는 flag 배열을 정의한다. (false면 책이 남아있음을 의미)&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;2. m개의 a, b를 입력받아 data 리스트에 추가하고, b 값을 기준으로 하여 오름차순으로 정렬한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. data 리스트가 빌 때까지 아래와 같은 작업을 반복 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - data 리스트에서 우선순위가 가장 높은 요소(정렬했으므로 첫 번째 값)를 꺼내 a, b에 할당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - a 이상 b 이하의 책 중에 아직 남아 있는 책이 있다면 해당 책의 flag 값을 true로 갱신하고 result를 1 증가시킨 후 break한다.&lt;/p&gt;</description>
      <category>백준(JAVA) 풀이/그리디 알고리즘</category>
      <category>gold</category>
      <category>java</category>
      <category>그리디 알고리즘</category>
      <category>백준</category>
      <category>백준 9576</category>
      <category>이분 매칭</category>
      <category>자바</category>
      <category>책 나눠주기</category>
      <author>개발윗미</author>
      <guid isPermaLink="true">https://unie2.tistory.com/1371</guid>
      <comments>https://unie2.tistory.com/1371#entry1371comment</comments>
      <pubDate>Sat, 15 Oct 2022 10:24:01 +0900</pubDate>
    </item>
  </channel>
</rss>