<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jm_25.log</title>
        <link>https://velog.io/</link>
        <description>매일 매일 한 개씩</description>
        <lastBuildDate>Wed, 13 Jul 2022 13:09:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jm_25.log</title>
            <url>https://images.velog.io/images/jm_25/profile/2a8811fa-c966-4b98-9c90-56d5bf32fd0b/고래고래.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jm_25.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jm_25" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[백준_1259] 팰린드롬수 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801259-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%88%98-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801259-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%88%98-JAVA</guid>
            <pubDate>Wed, 13 Jul 2022 13:09:15 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-출처">문제 출처</h2>
<ul>
<li><a href="https://www.acmicpc.net/problem/1259">https://www.acmicpc.net/problem/1259</a></li>
</ul>
<p><img src="https://velog.velcdn.com/images/jm_25/post/781b24c7-ab39-4ef1-bf1d-5fd3fb05162f/image.jpg" alt=""><img src="https://velog.velcdn.com/images/jm_25/post/8b96660d-eb95-4c3e-a068-6207b03d288d/image.jpg" alt=""></p>
<br/>

<h2 id="풀이">풀이</h2>
<blockquote>
<p>문자열 문제이다.
문자열을 파싱한 후 양쪽의 Index를 옮겨가며 서로 같은지를 확인하면 된다.
확인했는데 숫자가 같지 않으면 팰린드롬수가 아니다.
for문을 통해 index를 옮겨갈텐데, 여기서는 문자열 길이 / 2까지만 비교해주면 된다.
예를 들어, 문자열(131)의 길이가 홀수 3 이라면, 3/2 = 1 번만 문자열을 비교해주면 된다. 가운데 자리 수는 어떤 것이 오던지 팰린드롬수이므로
문자열(1331)의 길이가 짝수 4라면, 4/2 = 2번 문자열을 비교해주어야 한다. (1=1, 3=3)</p>
</blockquote>
<br/>

<h2 id="코드">코드</h2>
<pre><code class="language-java">package boj.class2.팰린드롬수_1259;

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

public class Main {
    public static void main(String[] args) throws IOException {
        final String PATH = &quot;src/test/java/boj/class2/팰린드롬수_1259/input.txt&quot;;
        System.setIn(new FileInputStream(PATH));
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            String str = stringTokenizer.nextToken();
            if (&quot;0&quot;.equals(str)) break;
            int size = str.length();
            boolean isPalindrome = true;
            for (int i = 0; i &lt; (size / 2); i++) {
                if (str.charAt(i) != str.charAt(size - i - 1)) {
                    isPalindrome = false;
                    break;
                }
            }
            System.out.println(isPalindrome ? &quot;yes&quot; : &quot;no&quot;);
        }
    }

}</code></pre>
<br/>

<h2 id="채점결과">채점결과</h2>
<p><img src="https://velog.velcdn.com/images/jm_25/post/f2085032-883d-4edf-a933-181994af3b2d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_4949] 균형잡힌 세상 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%804949-%EA%B7%A0%ED%98%95%EC%9E%A1%ED%9E%8C-%EC%84%B8%EC%83%81-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%804949-%EA%B7%A0%ED%98%95%EC%9E%A1%ED%9E%8C-%EC%84%B8%EC%83%81-JAVA</guid>
            <pubDate>Thu, 23 Dec 2021 07:54:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/33d1b468-c13b-4e30-9eda-28a93cce0db8/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/494928a93cce0db8/image.png">https://www.acmicpc.net/problem/494928a93cce0db8/image.png</a>)</p>
<p><img src="https://images.velog.io/images/jm_25/post/1643d1b6-e65b-44c8-8887-66eb4e635a66/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.52.34.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>스택 문제로 괄호의 Push / Pop 여부만 잘 체크해주면 쉽게 풀 수 있다.</li>
<li>처음 괄호 시작 시 &#39;)&#39; or &#39;]&#39;가 들어올 경우에는 균형잡힌 괄호가 아니므로 &quot;no&quot;를 출력한다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = null;
        String str = null;
        while (true) {
            Stack&lt;Character&gt; stack = new Stack();
            boolean fail = false;
            str = bufferedReader.readLine();
            if (&quot;.&quot;.equals(str)) break;
            stringTokenizer = new StringTokenizer(str);
            while (stringTokenizer.hasMoreTokens() &amp;&amp; !fail) {
                char[] wordToCharsArray = stringTokenizer.nextToken().toCharArray();
                for (int i = 0; i &lt; wordToCharsArray.length; i++) {
                    if (stack.isEmpty() &amp;&amp; wordToCharsArray[i] == &#39;)&#39; || stack.isEmpty() &amp;&amp; wordToCharsArray[i] == &#39;]&#39;) {
                        fail = true;
                        break;
                    }
                    switch (wordToCharsArray[i]) {
                        case &#39;(&#39;:
                            stack.push(&#39;(&#39;);
                            break;
                        case &#39;)&#39;:
                            if (stack.peek() == &#39;(&#39;) {
                                stack.pop();
                            } else {
                                stack.push(&#39;)&#39;);
                            }
                            break;
                        case &#39;[&#39;:
                            stack.push(&#39;[&#39;);
                            break;
                        case &#39;]&#39;:
                            if (stack.peek() == &#39;[&#39;) {
                                stack.pop();
                            } else {
                                stack.push(&#39;]&#39;);
                            }
                            break;
                    }
                }
            }
            if (fail) {
                System.out.println(&quot;no&quot;);
                continue;
            } else if (stack.isEmpty()) {
                System.out.println(&quot;yes&quot;);
            } else {
                System.out.println(&quot;no&quot;);
            }
        }
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/e76fc7d9-7621-4ea1-bb6a-025768f10f99/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.53.58.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_11866] 요세푸스 문제 0 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011866-%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4-%EB%AC%B8%EC%A0%9C-0-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011866-%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4-%EB%AC%B8%EC%A0%9C-0-JAVA</guid>
            <pubDate>Mon, 13 Dec 2021 14:38:41 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/11866">https://www.acmicpc.net/problem/11866</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/7dead078-a5af-4392-9f94-935cb63ab2ca/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-13%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.37.41.png" alt=""></p>
<hr>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>K의 배수일 때 Queue에서 poll()</li>
<li>K의 배수가 아닐 경우 Queue에서 poll() 후 다시 Queue에 add()</li>
</ul>
<hr>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int K = Integer.parseInt(stringTokenizer.nextToken());
        Queue&lt;Integer&gt; queue = new LinkedList&lt;&gt;();
        for (int i = 1; i &lt;= N; i++) {
            queue.add(i);
        }
        List&lt;Integer&gt; answerList = new ArrayList&lt;&gt;();
        int count = 0;
        while (!queue.isEmpty()) {
            count++;
            if (count % K != 0) {
                int number = queue.poll();
                queue.add(number);
            } else {
                answerList.add(queue.poll());
            }
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int value : answerList) {
            if (stringBuilder.length() &gt; 0) {
                stringBuilder.append(&quot;, &quot;);
            }
            stringBuilder.append(value);
        }
        System.out.println(&quot;&lt;&quot; + stringBuilder + &quot;&gt;&quot;);

    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/f8a554c7-cb71-4bea-a8a0-965e24bc768b/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-13%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.38.16.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_2108] 통계학 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802108-%ED%86%B5%EA%B3%84%ED%95%99-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802108-%ED%86%B5%EA%B3%84%ED%95%99-JAVA</guid>
            <pubDate>Mon, 13 Dec 2021 14:09:06 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/1ebe927d-5e84-4b9e-bae5-45b974509de7/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/2108">https://www.acmicpc.net/problem/2108</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/0c2a897a-4fcc-427a-976d-86a8007d50e3/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-13%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.07.22.png" alt=""></p>
<hr>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>없음 (단순한 구현 문제)</li>
</ul>
<hr>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int[] arr = new int[N];
        int[] countArray = new int[8001];
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            arr[i] = Integer.parseInt(stringTokenizer.nextToken());
            countArray[arr[i] + 4000]++;
        }
        Arrays.sort(arr);
        // 1. 산술 평균
        System.out.println(Math.round(Arrays.stream(arr).average().getAsDouble()));
        // 2. 중앙 값
        System.out.println(arr[N / 2]);
        // 3. 최빈 값
        int max = 0;
        for (int i = 0; i &lt; 8001; i++) {
            if (countArray[i] &gt;= max) {
                max = countArray[i];
            }
        }
        List&lt;Integer&gt; list = new ArrayList&lt;&gt;();
        for (int i = 0; i &lt; 8001; i++) {
            if (countArray[i] == max) {
                list.add(i - 4000);
            }
        }
        System.out.println(list.size() == 1 ? list.get(0) : list.stream().sorted().collect(Collectors.toList()).get(1));
        // 4. 범위
        System.out.println(arr[arr.length - 1] - arr[0]);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/88f08325-e5be-4f19-bb12-fd8a825589e7/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-13%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.07.53.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_11050] 이항 계수 1 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011050-%EC%9D%B4%ED%95%AD-%EA%B3%84%EC%88%98-1-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011050-%EC%9D%B4%ED%95%AD-%EA%B3%84%EC%88%98-1-JAVA</guid>
            <pubDate>Sun, 12 Dec 2021 06:49:39 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/ab5de747-f76a-44e6-a372-5ae59e19b434/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/11050">https://www.acmicpc.net/problem/11050</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/6b39660a-dfb6-490e-8070-be71d968d854/image.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>문제를 풀기 전 이항계수가 무엇인지 알아야한다.</li>
<li>이항 계수의 공식은 다음과 같다
<img src="https://images.velog.io/images/jm_25/post/d9943981-ed3a-4c6d-87f9-14d7bc978c66/image.png" alt=""></li>
<li>Factorial을 구할지만 알면 쉽게 풀 수 있는 문제이다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int[] dp;
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int K = Integer.parseInt(stringTokenizer.nextToken());
        dp = new int[N + 1];
        dp[0] = 1;
        dp[1] = 1;
        System.out.println(factorial(N) / (factorial(N - K) * factorial(K)));
    }

    static int factorial(int n) {
        if (dp[n] != 0) {
            return dp[n];
        }
        return dp[n] = n * factorial(n - 1);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/ba41d5b1-fcf0-4db1-9ea3-77ca365cd9f2/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_2164] 카드 2 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802164-%EC%B9%B4%EB%93%9C-2-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802164-%EC%B9%B4%EB%93%9C-2-JAVA</guid>
            <pubDate>Sun, 12 Dec 2021 06:14:45 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/2164">https://www.acmicpc.net/problem/2164</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/ca42ea4f-ddcb-4a6d-8018-d7afffbf7888/image.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ol>
<li>덱(Deque)에 데이터를 차례대로 넣는다. [1, 2, 3, 4, 5, 6]</li>
<li>덱의 Top에 있는 1을 먼저 뽑아낸다. deque.poll()</li>
<li>그 다음 Top의 2를 뽑아 가장 뒤로 보낸다.</li>
<li>위의 로직을 deque의 크기가 1이 아닐 경우 반복한다.</li>
</ol>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        Deque&lt;Integer&gt; deque = new ArrayDeque&lt;&gt;();
        for (int i = 1; i &lt;= N; i++) {
            deque.addLast(i);
        }
        while (deque.size() != 1) {
            deque.poll();
            int value = deque.poll();
            deque.addLast(value);
        }
        System.out.println(deque.peek());
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/4450322e-1fae-4bcf-8d78-33caf08c93f3/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_1966] 프린터 큐 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801966-%ED%94%84%EB%A6%B0%ED%84%B0-%ED%81%90-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801966-%ED%94%84%EB%A6%B0%ED%84%B0-%ED%81%90-JAVA</guid>
            <pubDate>Sat, 11 Dec 2021 17:19:50 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/1966">https://www.acmicpc.net/problem/1966</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/4b481108-f6ae-4fca-b0a8-d4ced8dfaf33/image.png" alt=""></p>
<hr>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>우선순위 큐와 큐를 사용하여 풀 수 있는 문제이다.</li>
<li>큐에 index와 우선순위를 넣는다. 그리고 우선순위 큐에는 우선순위의 값만 넣는다.</li>
<li>큐를 poll() 하면서 우선순위 큐의 peek() 값과 비교하여 일치하는지를 확인한다.</li>
<li>만약 일치한다면 큐에서 뽑은 데이터의 index가 M과 맞는지를 비교 후 값을 출력한다. 그렇지 않다면 다시 큐에 add() 한다.</li>
</ul>
<hr>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    private static class Data {
        int number;
        int order;

        public Data(int number, int order) {
            this.number = number;
            this.order = order;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int T = Integer.parseInt(stringTokenizer.nextToken());
        while (T-- &gt; 0) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            int N = Integer.parseInt(stringTokenizer.nextToken());
            int M = Integer.parseInt(stringTokenizer.nextToken());
            Queue&lt;Data&gt; queue = new LinkedList&lt;&gt;();
            PriorityQueue&lt;Integer&gt; priorityQueue = new PriorityQueue&lt;&gt;((o1, o2) -&gt; o2 - o1);
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            for (int i = 0; i &lt; N; i++) {
                int value = Integer.parseInt(stringTokenizer.nextToken());
                queue.add(new Data(i, value));
                priorityQueue.add(value);
            }
            int count = 0;
            while (!queue.isEmpty()) {
                Data data = queue.poll();
                if (priorityQueue.peek() == data.order) {
                    priorityQueue.poll();
                    count++;
                    if (data.number == M) {
                        System.out.println(count);
                    }
                } else {
                    queue.add(data);
                }
            }
        }
    }
}
</code></pre>
<hr>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/397c333a-3ae5-420c-9434-0eada97fca76/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_10866] 덱 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010866-%EB%8D%B1-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010866-%EB%8D%B1-JAVA</guid>
            <pubDate>Sat, 11 Dec 2021 16:26:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/452c95e9-1857-43e7-ba44-08e0d4310fb6/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/10866">https://www.acmicpc.net/problem/10866</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/566abf44-2d94-4a3f-8f4d-fe0d28bab74c/image.png" alt=""><img src="https://images.velog.io/images/jm_25/post/d82e9c5d-b31e-4137-bbee-e87676d80fe0/image.png" alt=""></p>
<hr>
<h2 id="개념">개념</h2>
<h3 id="deque-란">Deque 란?</h3>
<blockquote>
</blockquote>
<p><strong>덱(Deque)</strong>은 어떤 쪽으로 입력하고 어떤 쪽으로 출력하냐에 따라 스택으로 사용할 수 있고 큐로 사용할 수 있다. 특히 한쪽으로만 입력 가능하도록 설정한 덱을 스크롤(Scroll)이라고 하며, 한쪽으로만 출력 가능하도록 설정한 덱을 셸프(Shelf)라고 한다.</p>
<p><img src="https://images.velog.io/images/jm_25/post/157da5f3-ebf5-4fd4-98c3-a326810c85c3/image.png" alt=""></p>
<hr>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>Deque 문제이며 자바의 <strong>Deque 라이브러리</strong>를 이용해 쉽게 풀 수 있다.</li>
<li>Deque에 대한 개념은 찾아보는 것을 추천한다.</li>
</ul>
<p><br></br></p>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        Deque&lt;Integer&gt; deque = new ArrayDeque&lt;&gt;();
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            String command = stringTokenizer.nextToken();
            int value = 0;
            switch (command) {
                case &quot;push_front&quot;:
                    value = Integer.parseInt(stringTokenizer.nextToken());
                    deque.addFirst(value);
                    break;
                case &quot;push_back&quot;:
                    value = Integer.parseInt(stringTokenizer.nextToken());
                    deque.addLast(value);
                    break;
                case &quot;pop_front&quot;:
                    if (deque.isEmpty()) System.out.println(-1);
                    else System.out.println(deque.pollFirst());
                    break;
                case &quot;pop_back&quot;:
                    if (deque.isEmpty()) System.out.println(-1);
                    else System.out.println(deque.pollLast());
                    break;
                case &quot;size&quot;:
                    System.out.println(deque.size());
                    break;
                case &quot;empty&quot;:
                    if (deque.isEmpty()) System.out.println(1);
                    else System.out.println(0);
                    break;
                case &quot;front&quot;:
                    if (deque.isEmpty()) System.out.println(-1);
                    else System.out.println(deque.getFirst());
                    break;
                case &quot;back&quot;:
                    if (deque.isEmpty()) System.out.println(-1);
                    else System.out.println(deque.getLast());
                    break;
            }
        }
    }
}</code></pre>
<p><br></br></p>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/9c0b291f-34ae-4c07-964a-dcb951a9a064/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_2805] 나무 자르기 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802805-%EB%82%98%EB%AC%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%802805-%EB%82%98%EB%AC%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA</guid>
            <pubDate>Fri, 10 Dec 2021 08:10:07 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/2805">https://www.acmicpc.net/problem/2805</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/7966b826-eeb3-49e0-a67d-fda435a1e923/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.05.16.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<ul>
<li>이전에 풀었던 랜선 자르기 문제와 동일하게 풀 수 있다.
<a href="https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801654-%EB%9E%9C%EC%84%A0-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA">https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801654-%EB%9E%9C%EC%84%A0-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA</a></li>
<li>차이점이라면 랜선 자르기는 잘라진 갯수를 카운트 했는데, 나무 자르기의 경우 자르고 남은 부분을 더해야 한다.</li>
<li>입력의 크기가 크게 주어지므로 long으로 선언 해야한다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int M = Integer.parseInt(stringTokenizer.nextToken());

        long max = Long.MIN_VALUE;
        long[] arr = new long[N];
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        for (int i = 0; i &lt; N; i++) {
            arr[i] = Integer.parseInt(stringTokenizer.nextToken());
            if (max &lt; arr[i]) {
                max = arr[i];
            }
        }

        long min = 0;
        System.out.println(upperBound(N, M, max, arr, min));

    }

    private static long upperBound(int N, int M, long max, long[] arr, long min) {
        while (min &lt; max) {
            long mid = (min + max) / 2;
            long length = 0;
            for (int i = 0; i &lt; N; i++) {
                if (arr[i] - mid &gt; 0) {
                    length += (arr[i] - mid);
                }
            }

            if (length &lt; M) {
                max = mid;
            } else {
                min = mid + 1;
            }
        }

        return min - 1;
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/b99997b0-06a2-4038-8ba9-883f74b77970/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.08.57.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_1654] 랜선 자르기 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801654-%EB%9E%9C%EC%84%A0-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801654-%EB%9E%9C%EC%84%A0-%EC%9E%90%EB%A5%B4%EA%B8%B0-JAVA</guid>
            <pubDate>Fri, 10 Dec 2021 05:01:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/6cda7d5f-2f2f-4fae-bb3e-96b03779718b/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/1654">https://www.acmicpc.net/problem/1654</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/be57683f-8e09-4a51-8a6f-a2f558751ff0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.46.25.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>10816번 숫자카드2 문제와 동일한 이분 탐색 문제이다.
여기서 다른 점은 숫자카드2에서는 key를 찾기 위해 index를 이분탐색하였지만, 이번에는 길이를 기준으로 이분 탐색을 진행한다.</li>
<li>count가 M을 넘어가는 upperBound의 값을 찾아 -1을 해주면 N개를 만들 수 있는 랜선의 최대 길이를 나타낼 수 있다.</li>
<li>여기서 중요한 점은 랜선의 길이는 자연수이므로 mid가 0이 되지 않도록 max 값을 +1 해주어야 한다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int M = Integer.parseInt(stringTokenizer.nextToken());

        long max = Long.MIN_VALUE;
        int[] arr = new int[N];
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            arr[i] = Integer.parseInt(stringTokenizer.nextToken());
            if (max &lt; arr[i]) {
                max = arr[i];
            }
        }
        max++;
        System.out.println(upperBound(N, M, max, arr));
    }

    private static long upperBound(int N, int M, long max, int[] arr) {
        long min = 0;
        while (min &lt; max) {
            long mid = (min + max) / 2;
            int count = 0;
            for (int i = 0; i &lt; N; i++) {
                count += (arr[i] / mid);
            }
            if (count &lt; M) {
                max = mid;
            } else {
                min = mid + 1;
            }
        }

        return min - 1;
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/2508bff7-13f0-48dd-895f-a49a72e5b420/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.00.28.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_10816] 숫자 카드 2 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010816-%EC%88%AB%EC%9E%90-%EC%B9%B4%EB%93%9C-2-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010816-%EC%88%AB%EC%9E%90-%EC%B9%B4%EB%93%9C-2-JAVA</guid>
            <pubDate>Wed, 08 Dec 2021 23:02:43 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/1719d2e9-72a4-4b6f-bf29-8312634d2db4/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/10816">https://www.acmicpc.net/problem/10816</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/af0a69c3-23f2-4fa2-8580-323d65db7e23/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-09%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.57.49.png" alt=""><img src="https://images.velog.io/images/jm_25/post/4ac98a32-8286-4d1c-8f0d-db81d0cad564/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-09%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.58.04.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>이분 탐색으로 풀 수 있는 문제이지만, 처음 보는 유형이였다.</li>
<li>upper bound와 lower bound를 이용해 찾으려는 Key 값의 최소 시작 index와 최대 끝 index를 찾아서 풀 수 있는 문제이다.</li>
<li><a href="https://st-lab.tistory.com/267">https://st-lab.tistory.com/267</a> 의 풀이를 참고하여 풀었다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int[] arr = new int[N];
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        for (int i = 0; i &lt; N; i++) {
            arr[i] = Integer.valueOf(stringTokenizer.nextToken());
        }
        Arrays.sort(arr);

        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int M = Integer.parseInt(stringTokenizer.nextToken());
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i &lt; M; i++) {
            int key = Integer.parseInt(stringTokenizer.nextToken());
            stringBuilder.append(upperBound(arr, key) - lowerBound(arr, key)).append(&quot; &quot;);
        }
        System.out.println(stringBuilder);
    }

    public static int lowerBound(int[] arr, int key) {
        int lo = 0;
        int hi = arr.length;

        while (lo &lt; hi) {
            int mid = (lo + hi) / 2;
            if (key &lt;= arr[mid]) {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        return lo;
    }

    public static int upperBound(int[] arr, int key) {
        int lo = 0;
        int hi = arr.length;

        while (lo &lt; hi) {
            int mid = (lo + hi) / 2;
            if (key &lt; arr[mid]) {
                hi = mid;
            } else {
                lo = mid + 1;
            }
        }

        return lo;
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_10815] 숫자 카드 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010815-%EC%88%AB%EC%9E%90-%EC%B9%B4%EB%93%9C-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010815-%EC%88%AB%EC%9E%90-%EC%B9%B4%EB%93%9C-JAVA</guid>
            <pubDate>Wed, 08 Dec 2021 22:55:48 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/ebe0e26c-74d6-441a-a8e1-bdefdce30dbb/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/10815">https://www.acmicpc.net/problem/10815</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/89676838-f7d7-41d8-bf83-2cb32165f4e3/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-09%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.53.11.png" alt=""><img src="https://images.velog.io/images/jm_25/post/6452562e-dfc8-4300-b4f5-4c6242886318/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-09%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.53.21.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>이분탐색을 이용하여 풀 수 있는 문제이다.</li>
<li>카운트 정렬로 풀 수도 있겠지만, 이분 탐색으로 분류된 문제이다.</li>
<li>Arrays.binarySearch()을 통해 쉽게 풀 수 있다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int[] arr = new int[N];
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        for (int i = 0; i &lt; N; i++) {
            arr[i] = Integer.valueOf(stringTokenizer.nextToken());
        }
        Arrays.sort(arr);
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int M = Integer.parseInt(stringTokenizer.nextToken());
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i &lt; M; i++) {
            if (Arrays.binarySearch(arr, Integer.parseInt(stringTokenizer.nextToken())) &gt;= 0) {
                stringBuilder.append(1).append(&quot; &quot;);
            } else {
                stringBuilder.append(0).append(&quot; &quot;);
            }
        }
        System.out.println(stringBuilder);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/f8ad81f7-50c8-4bae-bd24-de9be6b84bf7/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-09%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.55.03.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_7568] 덩치 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%807568-%EB%8D%A9%EC%B9%98-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%807568-%EB%8D%A9%EC%B9%98-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 15:19:32 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/ceb4cb9f-ce02-45dc-a2d0-a7c4eef271f8/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/7568">https://www.acmicpc.net/problem/7568</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/c80038b2-eebb-48ce-9086-d95ddeaffd70/image.png" alt=""><img src="https://images.velog.io/images/jm_25/post/b252484b-a0aa-4859-8f50-bf8d157e990c/image.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>주어진 N의 크기가 크지 않으므로 브루트포스 알고리즘을 통해 해결할 수 있다.</li>
<li>주어진 몸무게/키를 순서대로 모두 비교한다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    public static class Member {
        int weight;
        int height;

        public Member(int weight, int height) {
            this.weight = weight;
            this.height = height;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());

        List&lt;Member&gt; members = new ArrayList&lt;&gt;();
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            members.add(new Member(Integer.parseInt(stringTokenizer.nextToken()), Integer.parseInt(stringTokenizer.nextToken())));
        }

        int[] result = new int[N];
        for (int i = 0; i &lt; members.size(); i++) {
            solution(members, i, N, result);
        }
        for (int rank : result) {
            System.out.println(rank + 1);
        }
    }

    private static void solution(List&lt;Member&gt; members, int i, int N, int[] result) {
        for (int j = 0; j &lt; N; j++) {
            if (i == j) continue;
            if (members.get(i).weight &lt; members.get(j).weight &amp;&amp; members.get(i).height &lt; members.get(j).height) {
                result[i]++;
            }
        }
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/eda7269c-058d-45af-a0d9-d8d6dca0b346/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_1436] 영화감독 숌 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801436-%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85-%EC%88%8C-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801436-%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85-%EC%88%8C-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 08:15:27 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/222b7f68-d6d1-41e5-b93e-7afc2d5c59fb/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
<p><a href="https://www.acmicpc.net/problem/1436">https://www.acmicpc.net/problem/1436</a></p>
</blockquote>
<p><img src="https://images.velog.io/images/jm_25/post/45af5787-17aa-4d5c-a62f-42d91725f668/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.12.41.png" alt=""><img src="https://images.velog.io/images/jm_25/post/2dcc92eb-089a-4148-9ed6-8cc846b91b8e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.13.05.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<ul>
<li>666부터 숫자를 증가시켜 &quot;666&quot;을 포함하는 경우를 찾으면 된다.</li>
<li>브루트포스 알고리즘</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int number = 666;
        int count = 0;
        while (count &lt; N) {
            if (String.valueOf(number).contains(&quot;666&quot;)) {
                count++;
            }
            number++;
        }
        System.out.println(--number);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/43ae4343-63be-4b02-95df-0b7f3dc95613/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.14.42.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_1874] 스택 수열 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801874-%EC%8A%A4%ED%83%9D-%EC%88%98%EC%97%B4-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801874-%EC%8A%A4%ED%83%9D-%EC%88%98%EC%97%B4-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 07:15:36 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/ac03c885-93d7-4792-adfc-af98cd46bacc/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/1874">https://www.acmicpc.net/problem/1874</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/5323d19b-14e9-4652-9da9-2ecd5d7084f2/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.11.01.png" alt=""><img src="https://images.velog.io/images/jm_25/post/3a27f77e-88f7-4709-88ea-b8bd052eaab9/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.11.23.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>스택 문제이다.</li>
<li>입력 받은 값이 top 보다 클 경우 스택에 Push를 해준다. 이 때 &#39;+&#39;는 StringBuilder를 통해 append 해준다.</li>
<li>만약 스택의 top이 입력 받은 값과 다르다면 구현할 수 없는 수열이다. &quot;NO&quot;를 return 한다.</li>
<li>입력 받은 값이 top 보다 작거나 같을 경우는 Pop을 해주면 된다. 이 때 &#39;-&#39;는 StringBuilder를 통해 append 한다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());

        Stack&lt;Integer&gt; stack = new Stack&lt;&gt;();
        StringBuilder stringBuilder = new StringBuilder();
        int top = 0;
        int N = Integer.parseInt(stringTokenizer.nextToken());
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            int value = Integer.parseInt(stringTokenizer.nextToken());
            if (value &gt; top) {
                for (int j = top + 1; j &lt;= value; j++) {
                    stack.push(j);
                    stringBuilder.append(&quot;+&quot;).append(&quot;\n&quot;);
                }
                top = value;
            } else if (stack.peek() != value) {
                System.out.println(&quot;NO&quot;);
                return;
            }
            stack.pop();
            stringBuilder.append(&quot;-&quot;).append(&quot;\n&quot;);
        }
        System.out.println(stringBuilder);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/27e21638-6b8a-45d7-856a-1e127f29ccfa/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.14.05.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_11651] 좌표 정렬하기 2 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011651-%EC%A2%8C%ED%91%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-2-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8011651-%EC%A2%8C%ED%91%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-2-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 06:12:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/9662030c-449c-4670-b4a6-69c032563d74/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/11651">https://www.acmicpc.net/problem/11651</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/d19d2c76-21d5-4381-9611-ecc6f78b6249/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.10.19.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>기존에 풀었던 11650 좌표 정렬하기와 동일한 유형의 문제이다.</li>
<li>기존 코드의 비교 방식에서 x, y 만 변경해주면 된다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    public static class Coordinate {
        int x;
        int y;

        public Coordinate(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        List&lt;Coordinate&gt; coordinateList = new ArrayList&lt;&gt;();
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            coordinateList.add(new Coordinate(Integer.parseInt(stringTokenizer.nextToken()), Integer.parseInt(stringTokenizer.nextToken())));
        }
        Collections.sort(coordinateList, (o1, o2) -&gt; {
            if (o1.y == o2.y) {
                return o1.x - o2.x;
            } else {
                return o1.y - o2.y;
            }
        });
        for (Coordinate coordinate : coordinateList) {
            System.out.println(coordinate.x + &quot; &quot; + coordinate.y);
        }
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/3e4a42fb-e557-45fa-8352-e321cd133e6f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.11.15.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_4153] 직각삼각형 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%804153-%EC%A7%81%EA%B0%81%EC%82%BC%EA%B0%81%ED%98%95-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%804153-%EC%A7%81%EA%B0%81%EC%82%BC%EA%B0%81%ED%98%95-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 06:01:09 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/8a79d54d-47ed-48f7-8e1e-e08578c67a1e/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/4153">https://www.acmicpc.net/problem/4153</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/b404c4b7-cbe2-46d1-9bb9-1a71cc431ced/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.55.38.png" alt=""><img src="https://images.velog.io/images/jm_25/post/7cd263d5-3c51-49d5-a1ee-6d2780272122/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.55.45.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<ul>
<li>피타고라스만 알고 있다면 쉽게 풀 수 있다.</li>
<li>처음에 주어진 수 6 8 10이 순서대로 입력으로 주어질 줄 알았는데, 10 8 6으로 주어질 수도 있어서 max 값을 찾아주어야하는 문제이다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = null;
        while (true) {
            int[] array = new int[3];
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            array[0] = Integer.parseInt(stringTokenizer.nextToken());
            array[1] = Integer.parseInt(stringTokenizer.nextToken());
            array[2] = Integer.parseInt(stringTokenizer.nextToken());
            Arrays.sort(array);
            if (array[0] == 0 &amp;&amp; array[1] == 0 &amp;&amp; array[2] == 0) break;
            if (Math.pow(array[2], 2) == (Math.pow(array[0], 2) + Math.pow(array[1], 2))) {
                System.out.println(&quot;right&quot;);
            } else {
                System.out.println(&quot;wrong&quot;);
            }
        }
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/51d00962-b6e7-499c-ab16-3a1a05be39b9/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.00.20.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_10773] 제로 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010773-%EC%A0%9C%EB%A1%9C-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010773-%EC%A0%9C%EB%A1%9C-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 05:27:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/882a7be2-f3c3-4ee0-93a4-240255e7b3c3/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/10773">https://www.acmicpc.net/problem/10773</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/4b24029a-e735-4096-9f15-41714d7110f5/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.25.03.png" alt=""><img src="https://images.velog.io/images/jm_25/post/09f4cf92-6cfe-4e1a-ab4f-cdba385a2878/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.25.17.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>그대로 구현하였으나, 문제의 요구사항으로는 스택을 사용하는게 적절한 것 같다.</li>
<li>문제에서 제시한 힌트대로 구현하면 쉽게 풀 수 있다.</li>
</ul>
<p><img src="https://images.velog.io/images/jm_25/post/ca1c3161-417e-4cd5-9712-a7ef1ae06f34/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.25.47.png" alt=""></p>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        List&lt;Integer&gt; list = new ArrayList&lt;&gt;();
        int N = Integer.parseInt(stringTokenizer.nextToken());
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            int value = Integer.parseInt(stringTokenizer.nextToken());
            if (value == 0){
                list.remove(list.size() - 1);
            } else{
                list.add(value);
            }
        }
        int sum = 0;
        for (Integer value : list) {
            sum += value;
        }
        System.out.println(sum);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/1c7c1c7f-f912-444c-8ac0-48fb4624985e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.26.31.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_10814] 나이순 정렬 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010814-%EB%82%98%EC%9D%B4%EC%88%9C-%EC%A0%95%EB%A0%AC-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%8010814-%EB%82%98%EC%9D%B4%EC%88%9C-%EC%A0%95%EB%A0%AC-JAVA</guid>
            <pubDate>Mon, 06 Dec 2021 04:32:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/f0acaaf9-a54f-4f4b-a229-4eb3f8c5f36a/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/10814">https://www.acmicpc.net/problem/10814</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/b09cbc18-695f-4985-960d-249dcd20cfa5/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.30.32.png" alt=""><img src="https://images.velog.io/images/jm_25/post/3cea7260-b777-49f4-b762-e4545ca4b0f2/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.30.49.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<blockquote>
</blockquote>
<ul>
<li>List로 데이터를 저장한 후, Collections.sort()를 이용하면 쉽게 풀 수 있는 문제이다.</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static class Member {
        int age;
        String name;

        public Member(int age, String name) {
            this.age = age;
            this.name = name;
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        List&lt;Member&gt; list = new ArrayList&lt;&gt;();
        int N = Integer.parseInt(stringTokenizer.nextToken());
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            list.add(new Member(Integer.parseInt(stringTokenizer.nextToken()), stringTokenizer.nextToken()));
        }
        Collections.sort(list, new Comparator&lt;Member&gt;() {
            @Override
            public int compare(Member o1, Member o2) {
                return o1.age - o2.age;
            }
        });
        for (Member member: list) {
            System.out.println(member.age + &quot; &quot; + member.name);
        }
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/1865e098-36a7-41d5-9cc7-807b3de826b4/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.32.12.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준_1018] 체스판 다시 칠하기 - JAVA]]></title>
            <link>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801018-%EC%B2%B4%EC%8A%A4%ED%8C%90-%EB%8B%A4%EC%8B%9C-%EC%B9%A0%ED%95%98%EA%B8%B0-JAVA</link>
            <guid>https://velog.io/@jm_25/%EB%B0%B1%EC%A4%801018-%EC%B2%B4%EC%8A%A4%ED%8C%90-%EB%8B%A4%EC%8B%9C-%EC%B9%A0%ED%95%98%EA%B8%B0-JAVA</guid>
            <pubDate>Fri, 03 Dec 2021 15:35:52 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jm_25/post/5731fdfe-5e08-4c07-9b0b-3210651f0981/image.png" alt=""></p>
<h2 id="문제-출처">문제 출처</h2>
<blockquote>
</blockquote>
<p><a href="https://www.acmicpc.net/problem/1018">https://www.acmicpc.net/problem/1018</a></p>
<p><img src="https://images.velog.io/images/jm_25/post/5cee2e0c-f369-4279-bc89-ceeb2891cde5/image.png" alt=""><img src="https://images.velog.io/images/jm_25/post/0569e7b3-6448-4eba-8df7-1584a9bc155f/image.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<ul>
<li>&#39;W&#39;로 먼저 시작하는 체스판과 &#39;B&#39;로 먼저 시작하는 체스판을 미리 만들고
입력받은 체스판과 비교해서 최솟값을 구하면 되는 문제이다.</li>
<li>체스판을 만들 때는 flag를 잘 활용한다.</li>
<li>중요한 부분은 이중 for문을 선언할 때 index를 잘 체크해주어야 한다.
x는 x+9 &lt;= N 까지 증가할 수 있고, y는 y+9 &lt;= M 까지 증가할 수 있다.
(N, M이 8보다 큰 경우 체스판을 움직이면서 체크하기 위함)</li>
</ul>
<h2 id="코드">코드</h2>
<pre><code class="language-java">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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int M = Integer.parseInt(stringTokenizer.nextToken());
        char[][] board = new char[N][M];
        for (int i = 0; i &lt; N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            String row = stringTokenizer.nextToken();
            for (int j = 0; j &lt; M; j++) {
                char[] rowToCharArray = row.toCharArray();
                board[i][j] = rowToCharArray[j];
            }
        }
        char[][] whiteBoard = new char[8][8];
        char[][] blackBoard = new char[8][8];
        int flag = 1;
        for (int i = 0; i &lt; 8; i++) {
            for (int j = 0; j &lt; 8; j++) {
                whiteBoard[i][j] = flag == 1 ? &#39;W&#39; : &#39;B&#39;;
                flag *= -1;
                blackBoard[i][j] = flag == 1 ? &#39;W&#39; : &#39;B&#39;;
            }
            flag *= -1;
        }

        int answer = Integer.MAX_VALUE;
        int x = 0, y = 0;
        while (true) {
            int whiteResult = 0;
            int blackResult = 0;
            for (int i = x; i &lt; x + 8; i++) {
                for (int j = y; j &lt; y + 8; j++) {
                    if (board[i][j] != whiteBoard[i - x][j - y]) {
                        whiteResult++;
                    }
                    if (board[i][j] != blackBoard[i - x][j - y]) {
                        blackResult++;
                    }
                }
            }
            int resultMinValue = Math.min(whiteResult, blackResult);
            answer = Math.min(answer, resultMinValue);
            if ((y + 1) + 8 &lt;= M) {
                y++;
            } else {
                if ((x + 1) + 8 &lt;= N) {
                    x++;
                    y = 0;
                } else {
                    break;
                }
            }
        }
        System.out.println(answer);
    }
}</code></pre>
<h2 id="채점-결과">채점 결과</h2>
<p><img src="https://images.velog.io/images/jm_25/post/6375d64a-41cb-484e-b7b7-3b7a7fd3601f/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>