<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>potato_developer.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 25 Nov 2024 08:13:19 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>potato_developer.log</title>
            <url>https://velog.velcdn.com/images/potato_developer/profile/625711aa-94d9-4df7-a261-8d576cea5af8/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. potato_developer.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/potato_developer" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[백준] 2231:분해합 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2231%EB%B6%84%ED%95%B4%ED%95%A9-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2231%EB%B6%84%ED%95%B4%ED%95%A9-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Mon, 25 Nov 2024 08:13:19 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/d669048a-e341-414c-8af2-356fc58e18f0/image.png" alt=""></p>
<hr>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;

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

        int N = Integer.parseInt(st.nextToken());
        int length = String.valueOf(N).length();
        int i = 0;

        for(i = Math.max(N - length*9, 0); i &lt; N; i++) {
            int sum = 0;
            String num = String.valueOf(i);
            for(int j = 0; j &lt; num.length(); j++) {
                sum += Integer.parseInt(String.valueOf(num.charAt(j)));
            }
            sum += i;
            if(N == sum) break;
        }

        System.out.println(i==N?0:i);
    }
}</code></pre>
<p>처음에는 0부터 N까지 반복하면서 찾아야 하나 생각이 들었다.
그럼 너무 비효율적일 것 같아서 반복 횟수를 줄이는 방법을 생각해냈다.</p>
<p>N이 999라고 한다면, 생성자는 무조건 세 자리수 이하일 것이다.
생성자 자기 자신 + 각 자리 수의 합이 999가 되어야 한다.
각 자리수의 합은 최대값은 9*3 인 27이 된다. 
(1~27) + x = 999, =&gt; 즉 972 &lt;= x &lt;= 998 을 가진다. 
때문에 N 값에서 각 자리수 합의 최대값을 뺀 값까지만 탐색하면 된다는 판단을 내렸다.</p>
<p>가장 작은 생성자를 찾는 것이기 때문에, 생성자가 될 수 있는 N - (N의 최대 자리수 합) 부터 i를 반복하고 생성자를 찾을 시 종료해주면 된다. </p>
<p>만약 N이 한 자리수라면 i의 시작 값이 음수가 되기 때문에 예외가 발생한다.
이를 Math.max(i값, 0) 으로 처리해주면서 예외를 없애주었다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2798:블랙잭 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2798%EB%B8%94%EB%9E%99%EC%9E%AD-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2798%EB%B8%94%EB%9E%99%EC%9E%AD-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Mon, 25 Nov 2024 07:28:07 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/155df52c-6e38-4072-97a2-d6149f348cdc/image.png" alt=""></p>
<hr>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;

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

        int sum = 0;
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int [] arr = new int [N];
        for(int i = 0; i &lt; N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        for(int i = 0; i &lt; N-2; i++) {
            for(int j = i+1; j &lt; N-1; j++) {
                for(int k = j+1; k &lt; N; k++) {
                    int i1 = arr[i] + arr[j] + arr[k];
                    if(M &gt;= i1 &amp;&amp; sum &lt; i1) {
                        sum = i1;
                    }
                }
            }
        }
        System.out.println(sum);
    }
}</code></pre>
<p>문제를 보면 배열에서 세 가지의 숫자를 뽑아서 합이 M과 가장 가까운 합을 출력하는 것이다.
중복되지 않게 3개를 뽑아야 한다. 
반복문 3개를 사용해서 중복되지 않고 3개를 뽑는 코드를 작성했다.
M을 넘지 않고, sum(초기값 0)보다 크다면 업데이트 하는 식으로 조건식을 작성했다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 24267:알고리즘 수업-알고리즘의 수행 시간 6 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-24267%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%88%98%EC%97%85-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98-%EC%88%98%ED%96%89-%EC%8B%9C%EA%B0%84-6-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-24267%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%88%98%EC%97%85-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98-%EC%88%98%ED%96%89-%EC%8B%9C%EA%B0%84-6-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Fri, 22 Nov 2024 11:05:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/f341ad2a-ef06-48a0-a1e0-4d9ee9e93591/image.png" alt=""></p>
<hr>
<p>도저히 감이 잡히지 않아서 다른 블로그를 참고했다.</p>
<hr>
<h3 id="방법-1-시그마-공식-사용">방법 1. 시그마 공식 사용</h3>
<p>$\displaystyle\sum_{i=1}^{n}{1}$ 이 식의 반복 횟수는 $n-1+1$ 이다.
-&gt; 윗끝 - 아랫끝 + 1 이라고 볼 수 있다.</p>
<p>해당 문제의 알고리즘을 시그마 식으로 나타내면, 
$\displaystyle\sum_{i=1}^{n-2}\displaystyle\sum_{j=i+1}^{n-1}\displaystyle\sum_{k=j+1}^{n}1$ 이다.</p>
<p>순차적으로 시그마 공식을 적용시켜 보겠다.
$\displaystyle\sum_{i=1}^{n-2}\displaystyle\sum_{j=i+1}^{n-1}(n-j)$</p>
<p>$\displaystyle\sum_{i=1}^{n-2}\frac{(n-i-1)(n-i)}2$</p>
<p>$(n)(n-1)(n-2)\over 6$ 으로 정리할 수 있다.</p>
<h3 id="방법-2조합-공식-이용">방법 2.조합 공식 이용</h3>
<p>(i,j,k)에 값을 넣어보며 규칙을 찾아보면
(1,2,3)...(1,2,7)
(2,3,4)...(2,3,7)
... (5,6,7) -&gt; 중복되지 않는 세 숫자가 나타난다.</p>
<p>$_nC_k = \frac{n!}{(n-k)!*k!}$</p>
<p>$_nC_3 = \frac{(n)(n-1)(n-2)} 6$ </p>
<p>위 식과 동일하다는 것을 알 수 있다. </p>
<hr>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;
import java.math.BigInteger;

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

        long n = Long.parseLong(st.nextToken());

        BigInteger result = new BigInteger(String.valueOf(n*(n-1)*(n-2)/6));



        System.out.println(result.toString() + &quot;\n&quot; + 3);
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 24266:알고리즘 수업-알고리즘의 수행 시간 5 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-24266%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%88%98%EC%97%85-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98-%EC%88%98%ED%96%89-%EC%8B%9C%EA%B0%84-5-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-24266%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%88%98%EC%97%85-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98-%EC%88%98%ED%96%89-%EC%8B%9C%EA%B0%84-5-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Fri, 22 Nov 2024 09:20:26 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/268c923c-17a1-4d58-bc24-fc828b3eb01f/image.png" alt=""></p>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;
import java.math.BigInteger;

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

        BigInteger n = new BigInteger(st.nextToken());
        BigInteger result = n.pow(3);

        System.out.println(result.toString() + &quot;\n&quot; + 3);
    }
}</code></pre>
<hr>
<p>자바에서는 500000*3의 값을 출력할 수 있는 기본 자료형이 존재하지 않는다.</p>
<p>때문에, java.math.BigInteger 클래스를 추가해서 무한대의 정수값을 받을 수 있도록 해줘야 한다.</p>
<p>math 패키지에 속하고 있기 때문에 멤버 메서드에 기본적인 수학 메서드는 다 있다.</p>
<p>toString()으로 출력해준다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 14215:세 막대 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-14215%EC%84%B8-%EB%A7%89%EB%8C%80-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-14215%EC%84%B8-%EB%A7%89%EB%8C%80-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Fri, 22 Nov 2024 08:52:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/f06d3276-9b7a-4edc-9366-9a81d5b4e0ac/image.png" alt=""></p>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;

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

        int [] arr = new int[st.countTokens()];
        int max = Integer.MIN_VALUE;
        int maxIndex = 0;
        int sum = 0;

        for (int i = 0; i &lt; arr.length; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            if (arr[i] &gt; max) {
                max = arr[i];
                maxIndex = i;
            }
        }

        for (int i = 0; i &lt; arr.length; i++) {
            if(i != maxIndex) {
                sum += arr[i];
            }
        }

        if(sum &lt;= max) {
            arr[maxIndex] = sum - 1;
        }

        System.out.println(sum + arr[maxIndex]);
    }
}</code></pre>
<hr>
<p>세 값을 입력받는다.
배열의 세 값중 최대 값과 그 값의 인덱스를 찾는다.
만약 삼각형의 조건을 충족하지 않는다면, arr[maxIndex]값을 sum - 1로 줄인다. 
sum + arr[maxIndex] 값을 출력한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 5073:삼각형과 세 변 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-5073%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC-%EC%84%B8-%EB%B3%80-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-5073%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC-%EC%84%B8-%EB%B3%80-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Fri, 22 Nov 2024 08:44:14 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/4f2f567e-45cc-437d-aa79-2b8d66f95ffb/image.png" alt=""></p>
<pre><code class="language-java">package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(true) {
            int [] arr = new int[3];
            int max = Integer.MIN_VALUE;
            int maxIndex = 0;
            int sum = 0;

            for(int i = 0; i &lt; 3; i++) {
                arr[i] = sc.nextInt();
                if(arr[i] &gt; max) {
                    max = arr[i];
                    maxIndex = i;
                }
            }

            if (arr[0] == 0 &amp;&amp; arr[1] == 0 &amp;&amp; arr[2] == 0) {
                break;
            }

            for (int i = 0; i &lt; 3; i++) {
                if(i != maxIndex) {
                    sum += arr[i];
                }
            }
            if(max &gt;= sum) {
                System.out.println(&quot;Invalid&quot;);
            } else if(arr[0] == arr[1] &amp;&amp; arr[1] == arr[2]) {
                System.out.println(&quot;Equilateral&quot;);
            } else if(arr[0] == arr[1] || arr[0] == arr[2] || arr[1] == arr[2]) {
                System.out.println(&quot;Isosceles&quot;);
            } else {
                System.out.println(&quot;Scalene&quot;);
            }


        }

    }
}</code></pre>
<hr>
<p>반복문을 사용해서 세 개의 값이 모두 0일때까지 반복한다.
세 값 중 최대 값과 최대값의 인덱스를 찾는다.
최대 값이 아닌 값들의 합을 구한다.
조건문을 사용하여 결과를 출력한다.</p>
<ol>
<li>삼각형인가?</li>
<li>정삼각형인가?</li>
<li>이등변 삼각형인가?</li>
<li>부등변 삼각형인가?</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 10101:삼각형 외우기 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-10101%EC%82%BC%EA%B0%81%ED%98%95-%EC%99%B8%EC%9A%B0%EA%B8%B0-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-10101%EC%82%BC%EA%B0%81%ED%98%95-%EC%99%B8%EC%9A%B0%EA%B8%B0-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Thu, 21 Nov 2024 01:48:08 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/47634c6e-b4d7-4544-b5a1-a7c9c6c86999/image.png" alt=""></p>
<hr>
<h3 id="코드">코드</h3>
<pre><code class="language-java">package buffer;

import java.io.*;
import java.util.StringTokenizer;

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

        int [] x = new int [3];

        x[0] = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine(), &quot; &quot;);
        x[1] = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine(), &quot; &quot;);
        x[2] = Integer.parseInt(st.nextToken());

        if(x[0] + x[1] + x[2] != 180) {
            System.out.println(&quot;Error&quot;);
            return;
        }

        if(x[0] == 60 &amp;&amp; x[1] == 60) System.out.println(&quot;Equilateral&quot;);
        else if(x[0] == x[1] || x[0] == x[2] || x[1] == x[2]) System.out.println(&quot;Isosceles&quot;);
        else System.out.println(&quot;Scalene&quot;);

    }
}</code></pre>
<p>삼각형 판별을 먼저 한 후, 아니라면 return 한다.</p>
<p>정삼각형, 이등변삼각형, 일반 삼각형 순으로 조건문을 만들고 출력한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 9063: 대지 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-9063-%EB%8C%80%EC%A7%80-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-9063-%EB%8C%80%EC%A7%80-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Thu, 21 Nov 2024 01:38:26 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/83b90cd6-af6a-48b2-a516-838fc3eb0661/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/a4f0b696-ffb2-4cba-b4f8-043c9f440976/image.png" alt=""></p>
<hr>
<h3 id="코드">코드</h3>
<pre><code class="language-java">package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int [][] arr = new int[n][2];
        int xMin = Integer.MAX_VALUE;
        int xMax = Integer.MIN_VALUE;
        int yMin = Integer.MAX_VALUE;
        int yMax = Integer.MIN_VALUE;


        for(int i = 0; i &lt; n; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
            if(arr[i][0] &lt; xMin){
                xMin = arr[i][0];
            }
            if(arr[i][0] &gt; xMax){
                xMax = arr[i][0];
            }

            if(arr[i][1] &lt; yMin){
                yMin = arr[i][1];
            }
            if(arr[i][1] &gt; yMax){
                yMax = arr[i][1];
            }
        }

        System.out.println((xMax-xMin) * (yMax-yMin));
    }
}</code></pre>
<p>각 좌표의 최대 최소 값을 구해서 길이의 차를 곱해줬다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 3009: 네 번째 점 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-3009-%EB%84%A4-%EB%B2%88%EC%A7%B8-%EC%A0%90-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-3009-%EB%84%A4-%EB%B2%88%EC%A7%B8-%EC%A0%90-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Thu, 21 Nov 2024 01:25:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/f9906163-e464-43a7-b712-c4ad33d2eef5/image.png" alt=""></p>
<hr>
<h3 id="런타임-오류-코드">런타임 오류 코드</h3>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/56d34fff-515a-432c-ac77-63179da39aac/image.png" alt=""></p>
<p>반복문을 비효율적으로 사용해서 런타임 오류가 발생했다.</p>
<hr>
<h3 id="수정-코드">수정 코드</h3>
<pre><code class="language-java">package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [][] arr = new int[3][2];

        for(int i = 0; i &lt; 3; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
        }

        for(int i = 1; i &lt; 3; i++){
            if(arr[0][0] == arr[i][0]) {
                arr[0][0] = 0;
                arr[i][0] = 0;
            }
            if(arr[0][1] == arr[i][1]) {
                arr[0][1] = 0;
                arr[i][1] = 0;
            }
        }

        for(int i = 0; i &lt; 3; i++){
            if(arr[0][0] == 0 &amp;&amp; arr[i][0] != 0) {
                System.out.print(arr[i][0] + &quot; &quot;);
            }
        }
        if(arr[0][0] != 0) System.out.print(arr[0][0] + &quot; &quot;);

        for(int i = 0; i &lt; 3; i++){
            if(arr[0][1] == 0 &amp;&amp; arr[i][1] != 0) {
                System.out.println(arr[i][1]);
            }
        }
        if(arr[0][1] != 0) System.out.println(arr[0][1]);
    }
}</code></pre>
<p>뭔가 비효율적이라고 생각한다.
단순히 x와 y값 중에 짝이 없는 값을 출력하는 코드를 작성했다. 
다른 사람이 해결한 방식을 참고해봐야겠다. </p>
<h4 id="수정의-수정">수정의 수정</h4>
<p>반복문으로 판별하기보다는 단순히 조건문을 여러개 써서 짝이 아닌 것을 찾아보겠다. </p>
<pre><code class="language-java">package scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [][] arr = new int[3][2];

        for(int i = 0; i &lt; 3; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
        }

        int x, y;

        if(arr[0][0] == arr[1][0]) x = arr[2][0];
        else if(arr[0][0] == arr[2][0]) x = arr[1][0];
        else x = arr[0][0];

        if(arr[0][1] == arr[1][1]) y = arr[2][1];
        else if(arr[0][1] == arr[2][1]) y = arr[1][1];
        else y = arr[0][1];

        System.out.println(x + &quot; &quot; + y);
    }
}</code></pre>
<p>이렇게 풀이해봤지만 조건문을 사용하는게 미세하게 더 오래걸렸다..! </p>
<p>Scanner가 역시 너무 느린듯 하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 1085: 직사각형에서 탈출 (자바) ]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1085-%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%97%90%EC%84%9C-%ED%83%88%EC%B6%9C-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1085-%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%97%90%EC%84%9C-%ED%83%88%EC%B6%9C-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Thu, 21 Nov 2024 00:11:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/4ed412d2-3a8c-44fa-928c-97b3ce84abb9/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/2d8ea05f-9bcb-4196-9094-f974bf4d5d78/image.png" alt=""></p>
<hr>
<p>값 4개를 입력받고 x, y가 경계와 더 가까운쪽을 삼항연산자로 구한 뒤 더 작은 값을 출력했다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2745:진법변환 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2745%EC%A7%84%EB%B2%95%EB%B3%80%ED%99%98-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2745%EC%A7%84%EB%B2%95%EB%B3%80%ED%99%98-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 09 Nov 2024 09:51:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/d76ae009-6cc2-4866-9494-606ee6e7a062/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/8dd35ec0-ad0b-4a3e-9902-2804eab1af26/image.png" alt=""></p>
<hr>
<ol>
<li>진법 변환 구조</li>
</ol>
<p>10진법으로 변환한 값에 자릿수에 맞는 B의 거듭 제곱의 값을 곱해줘야 한다.</p>
<ol start="2">
<li>알파벳 처리</li>
</ol>
<p>조건이 대문자만 입력된다고 가정을 했으니</p>
<p>&#39;A&#39; : 65 </p>
<p>&#39;Z&#39; : 90</p>
<p>&#39;0&#39; : 48 </p>
<p>&#39;A&#39;는 10진법 값이 10이어야 한다. 따라서 &#39;A&#39; - &#39;A&#39; + 10 을 해주면 10의 값을 얻을 수 있다.</p>
<p>알파벳 처리 =&gt; C - &#39;A&#39; + 10</p>
<p>&#39;0&#39;은 10진법 값이 0이어야 한다. 따라서 &#39;0&#39; - &#39;0&#39; 을 해주면 0의 값을 얻을 수 있다.</p>
<p>0~9 까지의 숫자 처리 =&gt; C - &#39;0&#39; </p>
<p>​</p>
<ol start="3">
<li>문자열을 어떻게 10진법의 숫자로 만들까?</li>
</ol>
<p>String 메서드인 charAt()을 이용해서 char 형태로 하나씩 얻어온다.</p>
<p>char 변수에 char 상수를 빼는 연산을 수행하면 정수값으로 변한다.</p>
<p>(자바에서 char 타입이 사실상 정수형(유니코드)을 기반으로 하기 때문.</p>
<p>연산자를 사용하면 char 타입은 유니코드 값을 가지며 정수형으로 반환된다.</p>
<p>​</p>
<ol start="4">
<li>Character.getNumericValue(char C) 활용</li>
</ol>
<p>Character 클래스에 아주 유용한 메서드가 있었다.</p>
<p>그냥 문자 자체를 아스키코드가 아닌 정수로 바꿔준다. </p>
<p>대소문자 상관없이 a<del>z 까지는 10</del>35까지 바꿔주고</p>
<p>. , ? ! 과 같은 기호는 -1로 출력된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2292:벌집 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2292%EB%B2%8C%EC%A7%91-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2292%EB%B2%8C%EC%A7%91-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 09 Nov 2024 09:48:56 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/67777d33-7caf-468a-bfa1-6bdd0714e925/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/8c7eaa18-c9dd-4621-b40f-52bbd927def7/image.png" alt=""></p>
<hr>
<p>방의 범위가 6, 12, 18, 24... 순으로 커진다. </p>
<p>i는 각 범위의 마지막 번호이다. </p>
<p>입력된 N보다 i가 커질 때 까지 반복하며 i와 거쳐가는 방의 수(result)를 늘려간다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 1193: 분수찾기 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1193-%EB%B6%84%EC%88%98%EC%B0%BE%EA%B8%B0-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1193-%EB%B6%84%EC%88%98%EC%B0%BE%EA%B8%B0-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 09 Nov 2024 09:48:06 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/4c52c8e3-e61d-42d1-b916-fa4dad63a034/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/8288dcf3-4f25-4b0a-9f36-f804e894af14/image.png" alt=""></p>
<hr>
<p>비정방형 배열로 바꾸어보면</p>
<p>arr[0] : 1/1 </p>
<p>arr[1] : 1/2 2/1</p>
<p>arr[2] : 3/1 2/2 1/3</p>
<p>arr[3] : 1/4 2/3 3/2 4/1</p>
<p>arr[4] : 5/1 4/2 3/3 2/4 1/5</p>
<p>...</p>
<p>규칙 1 : 각 공간의 크기는 1씩 증가한다.</p>
<p>규칙 2 : 짝수번째 배열은 큰 수가 먼저 등장한다. </p>
<p>규칙 3 : 분자와 분모가 서로 반대 방향으로 1씩 크기가 변한다. </p>
<p>​</p>
<p>주어진 N으로 먼저 몇 번째 배열인지 찾으려고 시도했다.</p>
<p>n(n+1)/2 = N 이니까 역으로 진행하면 찾을 수 있지 않을까 라는 생각이 들었다. [규칙 1]</p>
<p>정수로 바꿔줘야 하지만, 소숫점 자리를 올림 처리하여 n 번째 배열임을 찾았다.</p>
<p>그 다음 arr[n]의 몇 번째 순서를 출력해야 하는지 찾기 위해 N - n(n - 1)/2을 해주었다. </p>
<p>n-1 번째까지의 모든 순서를 구하고 N에서 빼서 n번째 배열에서 몇 번째 순서인지를 offset에 저장했다.</p>
<p>1부터 시작하는 i와 n 부터 시작하는 j를  i가 offset과 같아질 때 까지 반복했다.</p>
<p>마지막으로 짝수와 홀수의 경우를 구분하여 출력하며 마무리했다. [규칙2, 3]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 5086: 배수와 약수 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-5086-%EB%B0%B0%EC%88%98%EC%99%80-%EC%95%BD%EC%88%98-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-5086-%EB%B0%B0%EC%88%98%EC%99%80-%EC%95%BD%EC%88%98-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 09 Nov 2024 09:47:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/33bcde57-cfa6-407e-bbcc-c6a963b4fdf1/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/b7a86d2c-7637-4baf-8278-e6eb8a12c88a/image.png" alt=""></p>
<hr>
<p>단순한 문제였다. </p>
<p>아직 BufferedReader랑 StringTokenizer 사용법을 잘 몰라서 Scanner를 썼다. 
StringBuilder 클래스도 쓰던데 나중에 알아봐야겠다.
약수는 나눴을 때 나머지가 없으면 된다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2581:소수 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2581%EC%86%8C%EC%88%98-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2581%EC%86%8C%EC%88%98-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Wed, 06 Nov 2024 07:26:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/0194e86d-fdad-401a-a52d-ca3b52cd2f0a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/ef4531e8-bd9a-4289-bd6b-18f9556ac58d/image.png" alt=""></p>
<hr>
<p>첫 시도는 실패했다.
출력 예시 값은 제대로 출력되었는데, 어떤 예외가 있는지 생각이 안난다..</p>
<hr>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/d669dedf-ceef-4862-9aea-bfe3adefc670/image.png" alt=""></p>
<p>지피티에 도움을 요청하니 만약 i 가 1일때의 경우를 생각하지 않아서였다.
i가 1이라면, ck 가 false가 되어 sum과 min에 값이 들어가게된다.
그래서 시작할 때 i가 1이라면 ck가 true가 되게 끔 설정해줬다. </p>
<hr>
<p>하지만 소수를 찾는 방법이 굉장히 비효율적인 코드여서 공략의 힘을 빌렸다. 
다른 사람들의 풀이와 지피티의 풀이도 에라토스테네스 체 알고리즘을 이용했다. </p>
<h4 id="에라토스테네스-체-알고리즘">에라토스테네스 체 알고리즘</h4>
<ul>
<li>소수를 찾기 위한 고대 그리스 수학자 에라토스테네스가 고안한 알고리즘. </li>
<li>이 방법은 주어진 수 n 이하의 모든 소스를 빠르게 찾는 데 효율적이며, 간단하지만 강력한 소수 판별 방법으로 알려져 있다. </li>
</ul>
<h4 id="알고리즘-과정">알고리즘 과정</h4>
<ol>
<li>초기화 : 2부터 n까지 모든 수를 나열한다. 여기서 2는 소수임이 알려져 있음으로, 가장 처음 소수로 시작한다.</li>
<li>소수 선택 : 가장 작은 소수 (처음엔 2)를 선택하고, 해당 소수의 배수를 모두 지운다. 이때, 자신은 지우지 않고 그대로 둔다. </li>
<li>반복 : 다시 남아있는 수로 이동하여 소수로 판별하고, 그 소수의 배수를 다시 지운다.</li>
<li>종료 조건 : $\sqrt n$ 보다 작은 수까지 확인이 끝나면 이후의 수들은 이미 소수로 판별된 상태가 된다. </li>
</ol>
<h4 id="에라토스테네스-체-알고리즘의-시간복잡도">에라토스테네스 체 알고리즘의 시간복잡도</h4>
<ul>
<li>주어진 범위 n에 대해 O($n\log\log{n}$)의 시간복잡도를 가진다. </li>
</ul>
<h4 id="알고리즘-구현-코드">알고리즘 구현 코드</h4>
<pre><code class="language-java">boolean[] isPrime = new boolean[N+1];

for(int i = 2; i &lt;= N; i++){
    isPrime[i] = true;
}

for(int i = 2; i * i &lt;= N; i++) {
    if(isPrime[i]) {
        for(int j = i * i; j &lt;= N; j += i) {
            isPrime[j] = false;
        }
    }
}</code></pre>
<hr>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/0532987d-b0a3-4cf6-bd2f-21fc9d90bc52/image.png" alt=""></p>
<p>에라토스테네스 체 알고리즘을 적용시켜서 풀어보았다. </p>
<p><img src="https://velog.velcdn.com/images/potato_developer/post/a3e61cd6-625f-4ac2-aa9b-8de73a06f4d4/image.png" alt=""></p>
<p>시간이 확실히 단축되었음을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 11653: 소인수분해 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-11653-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-11653-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Tue, 05 Nov 2024 16:25:12 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/17a6f875-2bef-4f23-885c-509972130e9a/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/da845bde-23a8-4186-862f-88837da1f74d/image.png" alt=""></p>
<hr>
<p>만약 i로 나눠진다면 출력하고 N 값을 나눈 몫으로 바꾸는 작업을 했고, i 가 증가되지 않도록 continue 문을 넣었다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 1978: 소수 찾기 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1978-%EC%86%8C%EC%88%98-%EC%B0%BE%EA%B8%B0-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-1978-%EC%86%8C%EC%88%98-%EC%B0%BE%EA%B8%B0-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 02 Nov 2024 17:52:56 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/a5f9cb8a-000d-49bc-97dd-b5c644d0f873/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/151b85a0-3bf6-44e3-9e63-30a6e25a9a9d/image.png" alt=""></p>
<hr>
<p>입력받은 숫자마다 1과 자신을 제외한 약수가 존재하는지 여부를 체크하고
cnt를 증가시켜 출력함.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 9506: 약수들의 합 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-9506-%EC%95%BD%EC%88%98%EB%93%A4%EC%9D%98-%ED%95%A9-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-9506-%EC%95%BD%EC%88%98%EB%93%A4%EC%9D%98-%ED%95%A9-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 02 Nov 2024 10:08:45 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/7f278318-f6dd-453f-8b70-64e13e5e87ff/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/c91786b9-c1af-40ed-abac-b16072bb8a33/image.png" alt=""></p>
<hr>
<p>n전까지만 반복하여 약수인 경우 checkSum 변수에 더해가고, StringBuffer에 i 값을 집어넣어주었다. 
마지막에 &#39; + &#39; 부분만 빼기 위해 sb.delete(sb.length() - 3, sb.length()); 를 해주었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2051: 약수 구하기 (자바)]]></title>
            <link>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2051-%EC%95%BD%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0-%EC%9E%90%EB%B0%94</link>
            <guid>https://velog.io/@potato_developer/%EB%B0%B1%EC%A4%80-2051-%EC%95%BD%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0-%EC%9E%90%EB%B0%94</guid>
            <pubDate>Sat, 02 Nov 2024 09:58:40 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/f964e013-72f9-401a-aa5d-c3230a1272b4/image.png" alt="">
<img src="https://velog.velcdn.com/images/potato_developer/post/e2d33fa9-2c6f-4110-9d06-3eb79f9f6c61/image.png" alt=""></p>
<hr>
<p>카운트를 만들어서 n을 1부터 n까지 나누며 약수의 숫자를 계산했다. 
못찾았을 경우 0을 출력하기 위해 boolean 변수를 추가했다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[맥북 초기불량 테스트]]></title>
            <link>https://velog.io/@potato_developer/%EB%A7%A5%EB%B6%81-%EC%B4%88%EA%B8%B0%EB%B6%88%EB%9F%89-%ED%85%8C%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@potato_developer/%EB%A7%A5%EB%B6%81-%EC%B4%88%EA%B8%B0%EB%B6%88%EB%9F%89-%ED%85%8C%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Tue, 30 Apr 2024 06:08:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/potato_developer/post/fdc02970-d420-4a3b-9dd0-4a8c6b6aba54/image.png" alt=""></p>
<h2 id="1-외관-확인">1. 외관 확인</h2>
<p>[ ] 외관 기스 확인
[ ] 자판, 트랙패드 기스 확인
[ ] 시스템 종료 후, 액정 기스 확인</p>
<h2 id="2-흔들기">2. 흔들기</h2>
<p>[ ] 좌우로 흔들어서 내부 하드웨어 부착상태 확인하기</p>
<h2 id="3-수평확인">3. 수평확인</h2>
<p>[ ] 맥북을 평평한 곳에 두고 모서리 네 곳을 눌러서 수평 확인</p>
<h2 id="4-port-확인">4. Port 확인</h2>
<p>[ ] 정품 충전기 맥세이프 포트 확인
[ ] C타입 단자 확인
[ ] sd카드 단자 확인
[ ] hdmi 단자 확인
[ ] 오디오 단자 확인</p>
<h2 id="5-사양확인">5. 사양확인</h2>
<p>[ ] 맥 좌측 상단 &#39;이 Mac에 관하여&#39; 클릭 후 사양 체크</p>
<h2 id="6-키보드-테스트">6. 키보드 테스트</h2>
<p>[ ] 메모장 열고 모든 버튼 한 번씩 눌러보기
[ ] <a href="https://www.onlinemictest.com/ko/keyboard-test/">온라인 키보드 테스트</a></p>
<h2 id="7-트랙패드-테스트">7. 트랙패드 테스트</h2>
<p>[ ] 2중 터치 체크
[ ] 확대, 축소 확인
[ ] 손가락 두개로 마우스 우클릭 활성화
[ ] 파인더 앱에서 파일을 꾹 눌렀을 때 창이 뜨는지</p>
<h2 id="8-오디오-테스트">8. 오디오 테스트</h2>
<p>[ ] <a href="https://www.audiocheck.net/audiotests_stereo.php">스피커 테스트</a></p>
<h2 id="9-모니터-불량화소-테스트">9. 모니터 불량화소 테스트</h2>
<p>[ ] <a href="https://monitor.co.kr/a/1/">불량화소 테스트</a>
[ ] Fn + cmd + F11 -&gt; 검정화면 
[ ] 트랙패드 한 번 클릭 -&gt; 하얀 화면 
[ ] 계속 트랙패드 클릭해서 모든 색상 출력 확인
[ ] 줄이 생기는지, 모니터 빛 샘 확인</p>
]]></description>
        </item>
    </channel>
</rss>