<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>youngjun_10</title>
        <link>https://velog.io/</link>
        <description>Junior backend developer</description>
        <lastBuildDate>Mon, 07 Sep 2026 15:27:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>youngjun_10</title>
            <url>https://velog.velcdn.com/images/youngjun_10/profile/403d05e4-a03b-4a54-ae08-0fbb3bdf3cd9/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. youngjun_10. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/youngjun_10" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[프로그래머스 인덱스 바꾸기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Mon, 07 Sep 2026 15:27:59 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/59bd29ba-c734-40a1-b87e-e3955f77ed91/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>자바의 문자열(String)은 한 번 생성되면 수정할 수 없는 불변(Immutable) 객체이다.
따라서 내부 문자를 자유롭게 수정하기 위해 toCharArray() 메서드를 사용하여 문자열을 문자 배열(char[])로 변환한다.
두 변수의 값을 서로 맞바꿀 때 데이터 유실을 방지하기 위해 임시 변수 temp를 활용한다.
num1 위치의 문자를 temp에 안전하게 대피시키고, num2 위치의 문자를 num1에 덮어쓴 뒤, temp에 있던 값을 num2에 대입하여 두 문자의 자리를 정확히 교환한다.
인덱스 교환 작업이 완료된 문자 배열을 new String(chars)를 통해 다시 문자열 객체로 변환하여 최종 결과값을 반환한다.
main 메서드에서는 Main136 객체를 생성한 뒤, 프로그래머스 입출력 예시 데이터(&quot;hello&quot;, &quot;I love you&quot;)를 직접 대입하여 solution 메서드가 의도대로 잘 작동하는지 콘솔 출력을 통해 검증한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String my_string, int num1, int num2) {
        char[] chars = my_string.toCharArray();

        char temp = chars[num1];
        chars[num1] = chars[num2];
        chars[num2] = temp;

        return new String(chars);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 인덱스 바꾸기
public class Main136 {
    public static void main(String[] args) {
        Main136 main = new Main136();

        // 테스트 1
        String myString1 = &quot;hello&quot;;
        int num1_1 = 1;
        int num2_1 = 2;
        String result1 = main.solution(myString1, num1_1, num2_1);
        System.out.println(result1); // 기대값: hlelo

        // 테스트 2
        String myString2 = &quot;I love you&quot;;
        int num1_2 = 3;
        int num2_2 = 6;
        String result2 = main.solution(myString2, num1_2, num2_2);
        System.out.println(result2); // 기대값: I l veoyou
    }

    public String solution(String my_string, int num1, int num2) {
        char[] chars = my_string.toCharArray();

        char temp = chars[num1];
        chars[num1] = chars[num2];
        chars[num2] = temp;

        return new String(chars);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/cba9aca8-a959-4f79-89e6-73b44b277a06/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 한 번만 등장한 문자]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%93%B1%EC%9E%A5%ED%95%9C-%EB%AC%B8%EC%9E%90</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%93%B1%EC%9E%A5%ED%95%9C-%EB%AC%B8%EC%9E%90</guid>
            <pubDate>Sun, 06 Sep 2026 15:25:57 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ccc54ddf-4b12-4957-a045-c2d3e4a79359/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 s가 매개변수로 주어집니다.
s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>빈도수 저장 배열 생성
크기가 26인 정수형 배열 count를 선언한다.
알파벳 소문자의 총 개수만큼 공간을 할당하여 각 문자가 문자열 내에서 몇 번 등장했는지 기록한다.
문자 등장 횟수 카운트
문자열 s의 길이만큼 반복문을 실행한다. s.charAt(i) - &#39;a&#39; 연산을 통해 각 문자를 0부터 25까지의 인덱스로 변환하고, 해당 인덱스의 값을 1씩 증가시킨다.
한 번만 등장한 문자 추출 및 정렬
결과를 담을 StringBuilder 객체 sb를 생성한다.
0부터 25까지 반복문을 돌며 count[i] == 1인 조건을 확인한다.
등장 횟수가 정확히 1번인 문자만 골라내어 원래 알파벳 문자로 변환한 뒤 sb에 차례대로 추가한다.
인덱스 0인 &#39;a&#39;부터 차례대로 탐색하기 때문에 별도의 정렬 알고리즘을 사용하지 않아도 자동으로 알파벳 사전 순서가 유지된다.
결과 반환
조합된 StringBuilder를 toString() 메서드를 통해 최종 문자열로 변환하여 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.Arrays;

class Solution {
    public String solution(String s) {
        int[] count = new int[26];

        for (int i = 0; i &lt; s.length(); i++) {
            count[s.charAt(i) - &#39;a&#39;]++;
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i &lt; 26; i++) {
            if (count[i] == 1) {
                sb.append((char) (i + &#39;a&#39;));
            }
        }

        return sb.toString();
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 한 번만 등장한 문자
public class Main135 {
    public static void main(String[] args) {
        Main135 T = new Main135();

        // 테스트 케이스 확인용
        System.out.println(T.solution(&quot;abcabcadc&quot;)); // &quot;d&quot;
        System.out.println(T.solution(&quot;abdc&quot;));      // &quot;abcd&quot;
        System.out.println(T.solution(&quot;hello&quot;));     // &quot;eho&quot;
    }

    public String solution(String s) {
        int[] count = new int[26];

        for (int i = 0; i &lt; s.length(); i++) {
            count[s.charAt(i) - &#39;a&#39;]++;
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i &lt; 26; i++) {
            if (count[i] == 1) {
                sb.append((char) (i + &#39;a&#39;));
            }
        }

        return sb.toString();
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/74a90744-7a3a-4065-a20d-44d5839b4d3a/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 약수 구하기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%95%BD%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%95%BD%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 05 Sep 2026 16:23:04 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c11ba5f6-c0ec-46e1-9022-b4df864c3153/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>main 메서드는 프로그램의 시작점으로, Main134 클래스의 객체를 생성한 뒤 문제에서 주어진 입출력 예시 24와 29를 각각 테스트한다.
Arrays.toString()을 사용해 배열의 요소를 보기 쉽게 문자열로 변환하여 출력한다.
solution 메서드는 정수 n을 매개변수로 받아 약수들을 찾아내는 핵심 로직이다.
먼저 약수의 개수가 몇 개일지 미리 알 수 없기 때문에 크기가 유연하게 조절되는 ArrayList&lt;Integer&gt;를 선언한다.
for 문을 통해 1부터 n까지의 숫자를 차례대로 반복한다.
n % i == 0 조건을 통해 현재 숫자 i로 n을 나누었을 때 나머지가 0인지 확인한다.
나머지가 0이라는 것은 i가 n의 약수라는 의미이므로 divisors 리스트에 추가한다.
1부터 순차적으로 탐색하기 때문에 리스트에 담기는 순서도 자연스럽게 오름차순이 된다.
마지막으로 리스트에 담긴 약수들을 반환하기 위해 stream().mapToInt(i -&gt; i).toArray()를 사용한다.
이는 Integer 객체 타입의 리스트를 자바 원시 타입 배열인 int[]로 변환하여 문제에서 요구하는 반환 타입에 맞추는 역할이다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int n) {
        List&lt;Integer&gt; divisors = new ArrayList&lt;&gt;();

        for (int i = 1; i &lt;= n; i++) {
            if (n % i == 0) {
                divisors.add(i);
            }
        }

        return divisors.stream().mapToInt(i -&gt; i).toArray();
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// 프로그래머스 약수 구하기
public class Main134 {
    public static void main(String[] args) {
        Main134 main = new Main134();

        // 입출력 예 #1
        int n1 = 24;
        int[] result1 = main.solution(n1);
        System.out.println(Arrays.toString(result1));

        // 입출력 예 #2
        int n2 = 29;
        int[] result2 = main.solution(n2);
        System.out.println(Arrays.toString(result2));
    }

    public int[] solution(int n) {
        List&lt;Integer&gt; divisors = new ArrayList&lt;&gt;();

        for (int i = 1; i &lt;= n; i++) {
            if (n % i == 0) {
                divisors.add(i);
            }
        }

        return divisors.stream().mapToInt(i -&gt; i).toArray();
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8b74a40f-687d-4360-b8f9-6193ba20bb6a/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 편지]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%8E%B8%EC%A7%80</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%8E%B8%EC%A7%80</guid>
            <pubDate>Fri, 04 Sep 2026 17:28:24 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/2c6d3a2c-05fd-4738-8d80-186a056370f1/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다.
할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>main 메서드 안에서는 Main133 클래스의 객체 T를 생성한다.
그 후 객체 T를 통해 solution 메서드를 호출하면서 테스트 케이스 문자열인 &quot;happy birthday!&quot;와 &quot;I love you~&quot;를 전달한다.
System.out.println을 사용해 solution 메서드가 계산하여 반환한 결과값을 콘솔 창에 출력한다.
solution 메서드는 매개변수로 문자열 message를 전달받는다.
자바의 length() 메서드를 이용해 전달받은 문자열의 전체 글자 수를 구한다.
이때 공백도 하나의 문자로 정확하게 포함된다.
구한 글자 수에 한 글자당 필요한 가로 크기인 2를 곱해준다.
계산된 최종 결과값을 answer 변수에 저장한 뒤 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String message) {
        int answer = message.length() * 2;
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 편지
public class Main133 {
    public static void main(String[] args) {
        Main133 T = new Main133();
        System.out.println(T.solution(&quot;happy birthday!&quot;)); // 30
        System.out.println(T.solution(&quot;I love you~&quot;)); // 22
    }

    public int solution(String message) {
        int answer = message.length() * 2;
        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a31d8bac-a92e-4ded-b199-a94d5729a08f/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 가장 큰 수 찾기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%88%98-%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%88%98-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Thu, 03 Sep 2026 15:08:06 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d45a6c6c-f24c-4e27-bdbb-80d6f9ce4eea/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main132 클래스는 작성한 코드를 직접 실행하고 테스트하기 위한 진입점이다.
main 메서드 안에서 Solution4 클래스의 인스턴스를 생성한다.
테스트용 배열 데이터를 선언하고 solution 메서드를 호출한다.
Arrays.toString()을 활용하여 리턴된 배열의 결과를 콘솔에 출력한다.
Solution4 클래스는 정수 배열에서 최댓값과 해당 인덱스를 찾아내는 핵심 로직을 수행한다.
int max = array[0];과 int index = 0;은 배열의 첫 번째 요소를 각각 초기 최댓값과 인덱스로 지정한다.
for 반복문은 배열의 두 번째 요소부터 마지막 요소까지 차례대로 탐색한다.
if 조건문은 현재 순회 중인 값이 기존 max보다 큰지 비교한다.
조건에 부합할 경우 max 변수 값을 현재 값으로 갱신하고 index 변수에도 현재의 위치를 저장한다.
전체 배열 탐색이 끝난 후 완성된 최댓값과 인덱스를 배열에 담아 리턴한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] array) {
        int max = array[0];
        int index = 0;

        for (int i = 1; i &lt; array.length; i++) {
            if (array[i] &gt; max) {
                max = array[i];
                index = i;
            }
        }

        return new int[] { max, index };
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.Arrays;

// 프로그래머스 가장 큰 수 찾기
public class Main132 {
    public static void main(String[] args) {
        Solution4 sol = new Solution4();

        // 테스트 케이스 1
        int[] array1 = {1, 8, 3};
        int[] result1 = sol.solution(array1);
        System.out.println(Arrays.toString(result1)); // [8, 1] 출력이 나오면 정상!

        // 테스트 케이스 2
        int[] array2 = {9, 10, 11, 8};
        int[] result2 = sol.solution(array2);
        System.out.println(Arrays.toString(result2)); // [11, 2] 출력이 나오면 정상!
    }
}

class Solution4 {
    public int[] solution(int[] array) {
        int max = array[0];
        int index = 0;

        for (int i = 1; i &lt; array.length; i++) {
            if (array[i] &gt; max) {
                max = array[i];
                index = i;
            }
        }

        return new int[] { max, index };
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f27547a9-63bf-44ab-8ea7-bde859c2e8d1/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 문자열 계산하기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 02 Sep 2026 16:17:25 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/e53a1a0a-8b08-4773-8a98-991ba567fe80/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>my_string은 &quot;3 + 5&quot;처럼 문자열로 된 수식입니다.
문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>split(&quot; &quot;)을 사용하여 수식을 공백 기준으로 분할하다.
첫 번째 원소 parts[0]을 정수로 변환하여 초기 계산값 answer에 할당하다.
반복문은 인덱스 1부터 2씩 증가하며 연산자와 그다음 숫자를 순차적으로 추출하는 구조이다.
연산자가 +이면 answer에 숫자를 더하고, -이면 숫자를 차감하다.
모든 연산을 마친 후 최종 결과값 answer를 반환하다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String my_string) {
        String[] parts = my_string.split(&quot; &quot;);
        int answer = Integer.parseInt(parts[0]);

        for (int i = 1; i &lt; parts.length; i += 2) {
            String op = parts[i];
            int num = Integer.parseInt(parts[i + 1]);

            if (op.equals(&quot;+&quot;)) {
                answer += num;
            } else {
                answer -= num;
            }
        }

        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 문자열 계산하기
public class Main131 {
    public static void main(String[] args) {
        Main131 main = new Main131();

        // 입력값을 &quot;3 + 4&quot;로 변경
        String my_string = &quot;3 + 4&quot;;
        int result = main.solution(my_string);
        System.out.println(result); // 출력: 7
    }

    public int solution(String my_string) {
        String[] parts = my_string.split(&quot; &quot;);
        int answer = Integer.parseInt(parts[0]);

        for (int i = 1; i &lt; parts.length; i += 2) {
            String op = parts[i];
            int num = Integer.parseInt(parts[i + 1]);

            if (op.equals(&quot;+&quot;)) {
                answer += num;
            } else {
                answer -= num;
            }
        }

        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/b096e559-68e2-459b-b952-25c24df3d42b/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 배열의 유사도]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%9C%A0%EC%82%AC%EB%8F%84</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%9C%A0%EC%82%AC%EB%8F%84</guid>
            <pubDate>Tue, 01 Sep 2026 15:34:04 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8a8b4d25-50da-4ede-963c-d5e1f2fb3222/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>두 배열이 얼마나 유사한지 확인해보려고 합니다.
문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 두 문자열 배열 s1과 s2를 전달받아 공통으로 들어있는 원소의 개수를 세어 반환한다.
이중 for문 구조를 사용하여 s1의 모든 원소와 s2의 모든 원소를 하나씩 전부 비교한다.
s1[i].equals(s2[j]) 조건문은 두 배열의 원소가 서로 일치하는지 확인하며, 값이 같을 경우 answer 변수를 1씩 증가시킨다.
main 메서드는 프로그래머스의 두 가지 입출력 예시를 각각 테스트하기 위해 입력값을 배열로 생성하고, solution 메서드를 호출한 결과를 콘솔에 각각 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;
        for (int i = 0; i &lt; s1.length; i++) {
            for (int j = 0; j &lt; s2.length; j++) {
                if (s1[i].equals(s2[j])) {
                    answer++;
                }
            }
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 배열의 유사도
public class Main130 {
    public static int solution(String[] s1, String[] s2) {
        int answer = 0;
        for (int i = 0; i &lt; s1.length; i++) {
            for (int j = 0; j &lt; s2.length; j++) {
                if (s1[i].equals(s2[j])) {
                    answer++;
                }
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        // 첫 번째 입출력 예시 테스트
        String[] s1_1 = {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;};
        String[] s2_1 = {&quot;com&quot;, &quot;b&quot;, &quot;d&quot;, &quot;p&quot;, &quot;c&quot;};
        int result1 = solution(s1_1, s2_1);
        System.out.println(result1);

        // 두 번째 입출력 예시 테스트
        String[] s1_2 = {&quot;n&quot;, &quot;omg&quot;};
        String[] s2_2 = {&quot;m&quot;, &quot;dot&quot;};
        int result2 = solution(s1_2, s2_2);
        System.out.println(result2);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/1447f5b6-18a7-4a93-84b6-70f5ecf97a2d/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 숫자 찾기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%88%AB%EC%9E%90-%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%88%AB%EC%9E%90-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Mon, 31 Aug 2026 15:28:54 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/26e31b02-41f3-4a86-8d06-94c552450731/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 정수 num과 찾고자 하는 숫자 k를 입력받는다.
먼저 num을 문자열로 변환하여 각 자리 숫자에 접근할 수 있도록 하였다.
k는 정수지만 문자로 비교해야 하므로 &#39;0&#39; 문자를 더해 해당 숫자의 문자로 변환하였다.
문자열을 처음부터 끝까지 반복하며 각 자리 문자가 k와 같은지 검사한다.
일치하는 문자를 찾으면 그 위치 인덱스에 1을 더해 자리수를 반환한다. 이때 자리수는 1부터 세는 것이 문제 조건이다.
반복문이 끝날 때까지 찾지 못하면 -1을 반환한다.
main 메서드는 solution 메서드를 호출해 세 가지 예제 입력에 대해 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int num, int k) {
        String numStr = Integer.toString(num);
        char target = (char)(k + &#39;0&#39;);

        for (int i = 0; i &lt; numStr.length(); i++) {
            if (numStr.charAt(i) == target) {
                return i + 1;
            }
        }

        return -1;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 숫자 찾기
public class Main129 {
    public static int solution(int num, int k) {
        String numStr = Integer.toString(num);
        char target = (char)(k + &#39;0&#39;);

        for (int i = 0; i &lt; numStr.length(); i++) {
            if (numStr.charAt(i) == target) {
                return i + 1;
            }
        }

        return -1;
    }

    public static void main(String[] args) {
        // 테스트 예시
        System.out.println(solution(29183, 1));    // 출력: 3
        System.out.println(solution(232443, 4));   // 출력: 4
        System.out.println(solution(123456, 7));   // 출력: -1
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a3d159f3-1b97-43d4-9342-4651acd6d429/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 n의 배수 고르기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-n%EC%9D%98-%EB%B0%B0%EC%88%98-%EA%B3%A0%EB%A5%B4%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-n%EC%9D%98-%EB%B0%B0%EC%88%98-%EA%B3%A0%EB%A5%B4%EA%B8%B0</guid>
            <pubDate>Sun, 30 Aug 2026 15:39:35 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/382d5ca9-4c13-4124-a592-4a7a770160b7/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드
입력: 정수 n, 정수 배열 numlist
역할: numlist에서 n으로 나누어 떨어지는(나머지가 0인) 원소들만 골라서 새로운 배열로 반환한다.
구체적 동작:
ArrayList&lt;Integer&gt;인 multiples를 생성하여 조건에 맞는 수들을 동적으로 저장한다.
foreach 반복문으로 numlist의 각 원소를 순회하며 num % n == 0 조건을 검사한다.
조건에 맞으면 multiples에 추가한다.
리스트 크기만큼 크기를 가진 정수 배열 answer를 만들고, 리스트 내용을 순서대로 배열에 복사한다.
최종적으로 answer를 반환한다.
main 메서드
Main128 클래스 객체를 생성하여 solution 메서드를 호출한다.
여러 테스트 케이스를 준비해 각각에 대해 solution을 호출한다.
예시로 3가지 n과 numlist를 설정했다.
반환된 배열을 [값, 값, ...] 형식으로 출력한다.
출력문은 배열 앞뒤에 대괄호를 붙이고 각 원소는 쉼표와 공백으로 구분해서 보여준다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int n, int[] numlist) {
        java.util.List&lt;Integer&gt; multiples = new java.util.ArrayList&lt;&gt;();

        for (int num : numlist) {
            if (num % n == 0) {
                multiples.add(num);
            }
        }

        int[] answer = new int[multiples.size()];
        for (int i = 0; i &lt; multiples.size(); i++) {
            answer[i] = multiples.get(i);
        }

        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 n의 배수 고르기
public class Main128 {
    public int[] solution(int n, int[] numlist) {
        java.util.List&lt;Integer&gt; multiples = new java.util.ArrayList&lt;&gt;();
        for (int num : numlist) {
            if (num % n == 0) {
                multiples.add(num);
            }
        }
        int[] answer = new int[multiples.size()];
        for (int i = 0; i &lt; multiples.size(); i++) {
            answer[i] = multiples.get(i);
        }
        return answer;
    }

    public static void main(String[] args) {
        Main128 sol = new Main128();

        int[][] testNumlists = {
                {4, 5, 6, 7, 8, 9, 10, 11, 12},
                {1, 9, 3, 10, 13, 5},
                {2, 100, 120, 600, 12, 12}
        };
        int[] ns = {3, 5, 12};

        for (int i = 0; i &lt; ns.length; i++) {
            int[] result = sol.solution(ns[i], testNumlists[i]);
            System.out.print(&quot;[&quot;);
            for (int j = 0; j &lt; result.length; j++) {
                System.out.print(result[j]);
                if (j &lt; result.length - 1) System.out.print(&quot;, &quot;);
            }
            System.out.println(&quot;]&quot;);
        }
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a41688f2-817f-4ab2-8ef5-2f6b72c19e56/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 자릿수 더하기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%90%EB%A6%BF%EC%88%98-%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%90%EB%A6%BF%EC%88%98-%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 29 Aug 2026 16:34:07 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/36027306-9d0d-4690-9ad2-50364dc1c9e8/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main127 클래스는 실행 진입점인 main 메서드를 가지고 있다.
여기에서 Solution3 클래스의 객체를 생성하고, 두 개의 테스트 숫자 1234, 930211에 대해 solution 메서드를 호출해 결과를 출력한다.
Solution3 클래스의 solution 메서드는 다음과 같이 동작한다.
answer 변수를 0으로 초기화한다. 이 변수는 각 자리 숫자의 합을 누적하는 변수이다.
while (n &gt; 0) 반복문을 통해 입력값 n이 0이 아닐 동안 반복한다.
n % 10 연산으로 n의 가장 오른쪽(일의 자리) 숫자를 추출하여 answer에 더한다.
n /= 10 연산으로 n을 10으로 나누어 오른쪽 자리수를 자른다.
즉, 다음 자리 숫자를 준비한다.
반복문이 종료되면 answer에는 입력값의 모든 자리 수 합이 저장되어 있다.
이 값을 반환하여 최종 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int n) {
        int answer = 0;
        while (n &gt; 0) {
            answer += n % 10; 
            n /= 10;
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 자릿수 더하기
public class Main127 {
    public static void main(String[] args) {
        Solution3 sol = new Solution3();
        int n1 = 1234;
        int n2 = 930211;

        System.out.println(sol.solution(n1)); // 10 출력
        System.out.println(sol.solution(n2)); // 16 출력
    }
}

class Solution3 {
    public int solution(int n) {
        int answer = 0;
        while (n &gt; 0) {
            answer += n % 10;
            n /= 10;
        }
        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/14864467-fa6d-45db-90cc-cca1d8a3c08a/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 OX퀴즈]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-OX%ED%80%B4%EC%A6%88</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-OX%ED%80%B4%EC%A6%88</guid>
            <pubDate>Sat, 29 Aug 2026 05:13:44 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ba3146e1-0f3e-4f95-8203-432ec2698b0e/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>덧셈, 뺄셈 수식들이 &#39;X [연산자] Y = Z&#39; 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다.
수식이 옳다면 &quot;O&quot;를 틀리다면 &quot;X&quot;를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>main 메서드
Main126 클래스의 객체를 생성한다.
두 개의 문자열 배열 quiz1과 quiz2를 준비한다.
각각 solution 메서드에 전달하여 결과를 받는다.
Arrays.toString() 메서드를 활용해 결과 배열을 문자열 형태로 출력한다.
따라서 출력은 [&quot;X&quot;, &quot;O&quot;]와 [&quot;O&quot;, &quot;O&quot;, &quot;X&quot;, &quot;O&quot;] 형태로 나타난다.
solution 메서드
입력으로 여러 수식을 담은 문자열 배열 quiz를 받는다.
출력은 각 수식의 올바름 여부를 표기한 문자열 배열이다.
quiz.length 크기의 answer 배열을 선언한다.
반복문을 통해 각 수식을 처리한다.
각 수식을 &quot; &quot; (공백) 기준으로 분리한다: [X, op, Y, =, Z] 구조이다.
X, Y, Z를 Integer.parseInt로 정수로 변환한다. 음수도 올바르게 처리한다.
연산자는 문자열로 받아서 +인지 -인지 구분한다.
연산 결과를 변수 result에 저장한다.
만약 result가 Z와 같다면 answer[i]에 &quot;O&quot;, 아니면 &quot;X&quot;를 넣는다.
모든 수식에 대해 이 과정을 반복한다.
마지막으로 answer 배열을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String[] solution(String[] quiz) {
        String[] answer = new String[quiz.length];

        for (int i = 0; i &lt; quiz.length; i++) {
            String[] parts = quiz[i].split(&quot; &quot;);

            int X = Integer.parseInt(parts[0]);
            String op = parts[1];
            int Y = Integer.parseInt(parts[2]);
            int Z = Integer.parseInt(parts[4]);

            int result = 0;
            if (op.equals(&quot;+&quot;)) {
                result = X + Y;
            } else if (op.equals(&quot;-&quot;)) {
                result = X - Y;
            }

            if (result == Z) {
                answer[i] = &quot;O&quot;;
            } else {
                answer[i] = &quot;X&quot;;
            }
        }

        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.Arrays;

// 프로그래머스 OX퀴즈
public class Main126 {
    public static void main(String[] args) {
        Main126 sol = new Main126();

        String[] quiz1 = {&quot;3 - 4 = -3&quot;, &quot;5 + 6 = 11&quot;};
        String[] quiz2 = {&quot;19 - 6 = 13&quot;, &quot;5 + 66 = 71&quot;, &quot;5 - 15 = 63&quot;, &quot;3 - 1 = 2&quot;};

        String[] result1 = sol.solution(quiz1);
        String[] result2 = sol.solution(quiz2);

        // 배열 형태로 출력
        System.out.println(Arrays.toString(result1));
        System.out.println(Arrays.toString(result2));
    }

    public String[] solution(String[] quiz) {
        String[] answer = new String[quiz.length];

        for (int i = 0; i &lt; quiz.length; i++) {
            String[] parts = quiz[i].split(&quot; &quot;);

            int X = Integer.parseInt(parts[0]);
            String op = parts[1];
            int Y = Integer.parseInt(parts[2]);
            int Z = Integer.parseInt(parts[4]);

            int result = 0;
            if (op.equals(&quot;+&quot;)) {
                result = X + Y;
            } else {
                result = X - Y;
            }

            answer[i] = (result == Z) ? &quot;O&quot; : &quot;X&quot;;
        }

        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d18a6e6c-ff33-40fb-97dd-78857aab7e74/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 문자열안에 문자열]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%95%88%EC%97%90-%EB%AC%B8%EC%9E%90%EC%97%B4</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%95%88%EC%97%90-%EB%AC%B8%EC%9E%90%EC%97%B4</guid>
            <pubDate>Thu, 27 Aug 2026 15:24:50 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8a4e464b-509b-4ebc-9cfd-744b769131b5/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 str1, str2가 매개변수로 주어집니다.
str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 두 개의 문자열 str1과 str2를 입력으로 받는다.
str1.contains(str2) 메서드를 사용하여, str1 안에 str2가 포함되어 있는지를 검사한다.
만약 포함되어 있으면 1을 반환하고, 포함되어 있지 않으면 2를 반환하도록 조건문을 작성하였다.
main 메서드에서는 Main125 클래스의 인스턴스를 생성하여, 여러 테스트 케이스를 실행하고 결과를 System.out.println을 통해 출력한다.
테스트 예시 1은 &quot;ab6CDE443fgh22iJKlmn1o&quot; 안에 &quot;6CD&quot;가 포함되어 있으므로 1이 출력되고,
테스트 예시 2와 3은 각각 포함 여부가 없으므로 2가 출력된다.
전체적으로 매우 간결하고 명확하며, 문제 요구사항에 정확히 부합하는 코드이다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String str1, String str2) {
        if (str1.contains(str2)) {
            return 1;
        } else {
            return 2;
        }
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 문자열안에 문자열
public class Main125 {
    public int solution(String str1, String str2) {
        if (str1.contains(str2)) {
            return 1;
        } else {
            return 2;
        }
    }

    public static void main(String[] args) {
        Main125 sol = new Main125();

        // 테스트 예시 1
        System.out.println(sol.solution(&quot;ab6CDE443fgh22iJKlmn1o&quot;, &quot;6CD&quot;)); // 1

        // 테스트 예시 2
        System.out.println(sol.solution(&quot;ppprrrogrammers&quot;, &quot;pppp&quot;)); // 2

        // 테스트 예시 3
        System.out.println(sol.solution(&quot;AbcAbcA&quot;, &quot;AAA&quot;)); // 2
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a772caa2-3de5-4e99-8f6a-c88068f9cd02/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 제곱수 판별하기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%9C%EA%B3%B1%EC%88%98-%ED%8C%90%EB%B3%84%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%9C%EA%B3%B1%EC%88%98-%ED%8C%90%EB%B3%84%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 26 Aug 2026 15:14:22 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/cf7bae71-45d1-4d12-9f13-cf2eb8054924/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.
정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 int형 매개변수 n을 받아서 제곱근을 계산한다.
Math.sqrt(n)를 통해 n의 제곱근을 실수(double)로 구하고, 이를 (int) 형변환을 사용해 정수형으로 변환한다.
변환한 정수 sqrt를 다시 제곱하여 sqrt * sqrt이 원래 수 n과 같은지 비교한다.
같다면 n은 어떤 정수의 제곱으로 만들어지는 제곱수이므로 1을 반환한다.
다르다면 제곱수가 아니므로 2를 반환한다.
main 메서드는 프로그램 실행 시 동작하는 부분으로, 객체를 생성하여 solution 메서드를 두 가지 테스트 숫자(144, 976)에 대해 각각 호출한다.
각 결과를 콘솔에 출력함으로써 함수가 정확히 동작하는지를 확인하게 한다.
결과적으로 144는 제곱수이므로 1을 출력하고, 976은 제곱수가 아니어서 2를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int n) {
        int sqrt = (int) Math.sqrt(n); 
        if (sqrt * sqrt == n) {
            return 1;
        } else {
            return 2;
        }
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 제곱수 판별하기
public class Main124 {
    public int solution(int n) { // 제곱수인지 판별하는 메서드
        int sqrt = (int) Math.sqrt(n);
        if (sqrt * sqrt == n) {
            return 1;
        } else {
            return 2;
        }
    }

    public static void main(String[] args) {
        Main124 sol = new Main124();

        int test1 = 144;
        int test2 = 976;

        System.out.println(sol.solution(test1)); // 1
        System.out.println(sol.solution(test2)); // 2
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/27e6a85a-1f99-46ae-bc67-6bf5e3779d8b/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 세균 증식]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%84%B8%EA%B7%A0-%EC%A6%9D%EC%8B%9D</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%84%B8%EA%B7%A0-%EC%A6%9D%EC%8B%9D</guid>
            <pubDate>Tue, 25 Aug 2026 15:19:50 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/bfb36046-0cf5-49a1-aacc-11dc22414814/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>어떤 세균은 1시간에 두배만큼 증식한다고 합니다.
처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>클래스명은 Main123이며, package programmers.programmers2에 속해 있다.
solution 메서드는 세균 증식 계산을 담당한다.
입력으로 초기 세균 수 n과 경과 시간 t를 받으며, 매시간 세균 수가 2배로 증식하므로 n×2t를 계산하여 반환한다.
Math.pow(2, t) 함수를 사용해 2의 t제곱을 구하고, 이를 정수형으로 변환해 곱셈한다.
main 메서드에서는 두 개의 예시를 두고 solution을 호출하여 결과를 출력한다.
첫 번째 예시는 n=2, t=10일 때 결과는 2048이다.
두 번째 예시는 n=7, t=15일 때 결과는 229,376이다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int n, int t) {
        return n * (int)Math.pow(2, t);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 세균 증식
public class Main123 {
    // 세균 증식 계산 메서드
    public static int solution(int n, int t) {
        return n * (int)Math.pow(2, t);
    }

    public static void main(String[] args) {
        // 테스트 용 예시
        int n1 = 2;
        int t1 = 10;
        System.out.println(solution(n1, t1));  // 2048 예상

        int n2 = 7;
        int t2 = 15;
        System.out.println(solution(n2, t2));  // 229376 예상
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/6fcf36a8-62d6-43f8-b09c-b0eec3c59c8d/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 문자열 정렬 로직 구현 클래스]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%A0%95%EB%A0%AC-%EB%A1%9C%EC%A7%81-%EA%B5%AC%ED%98%84-%ED%81%B4%EB%9E%98%EC%8A%A4</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%A0%95%EB%A0%AC-%EB%A1%9C%EC%A7%81-%EA%B5%AC%ED%98%84-%ED%81%B4%EB%9E%98%EC%8A%A4</guid>
            <pubDate>Mon, 24 Aug 2026 15:46:22 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/7ebb5975-02e9-400e-aed2-91fe2d237932/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 문자열을 매개변수로 받아 작업한다.
먼저 toLowerCase() 메서드로 입력 문자열의 모든 문자를 소문자로 변환한다.
그다음 toCharArray()로 해당 문자열을 문자 배열로 분리한다.
Arrays.sort() 메서드로 문자 배열을 알파벳 순서대로 오름차순 정렬한다.
정렬된 문자 배열을 다시 문자열로 변환하여 반환한다.
main 메서드는 프로그램 진입점이다.
Solution2 클래스의 인스턴스 sol을 생성한다.
테스트용 문자열 세 개 input1, input2, input3을 선언한다.
각 문자열을 solution 메서드에 전달해 결과를 받고 이를 System.out.println으로 출력한다.
출력 결과는 문제의 예시와 같이 소문자 변환 및 정렬된 문자열이어야 한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.Arrays;

class Solution {
    public String solution(String my_string) {
        String lowerStr = my_string.toLowerCase();
        char[] chars = lowerStr.toCharArray();
        Arrays.sort(chars);
        return new String(chars);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.Arrays;

// 프로그래머스 문자열 정렬 로직 구현 클래스
class Solution2 {
    public String solution(String my_string) {
        String lowerStr = my_string.toLowerCase();
        char[] chars = lowerStr.toCharArray();
        Arrays.sort(chars);
        return new String(chars);
    }
}

// 프로그래머스 문자열 정렬하기 (2)
public class Main122 {
    public static void main(String[] args) {
        Solution2 sol = new Solution2();

        String input1 = &quot;Bcad&quot;;
        String input2 = &quot;heLLo&quot;;
        String input3 = &quot;Python&quot;;

        System.out.println(sol.solution(input1)); // 기대 출력: abcd
        System.out.println(sol.solution(input2)); // 기대 출력: ehllo
        System.out.println(sol.solution(input3)); // 기대 출력: hnopty
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ff5cd9f7-96e3-452b-87be-63b5bd104b17/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 7의 개수]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-7%EC%9D%98-%EA%B0%9C%EC%88%98</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-7%EC%9D%98-%EA%B0%9C%EC%88%98</guid>
            <pubDate>Sun, 23 Aug 2026 15:46:23 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/af008bc8-6398-4153-b243-068623dfc83d/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>머쓱이는 행운의 숫자 7을 가장 좋아합니다.
정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 정수 배열 array를 입력받는다.
먼저 answer 변수를 0으로 초기화한다. 이 변수는 배열 내 숫자들에 포함된 &#39;7&#39; 문자의 총 개수를 저장한다.
그 후 향상된 for문을 이용해 배열 내 모든 숫자 num을 하나씩 순회한다.
각 숫자를 Integer.toString(num) 메서드를 이용해 문자열로 변환한다. 이렇게 하면 예를 들어 숫자 77은 문자열 &quot;77&quot;이 된다.
변환된 문자열을 toCharArray()로 문자 배열로 만든다.
문자 배열을 다시 한 문자씩 검사하며, 문자가 &#39;7&#39;인 경우 answer를 1씩 증가시킨다.
모든 숫자에 대해 반복이 끝나면 최종적으로 누적된 answer 값을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int[] array) {
        int answer = 0;
        for (int num : array) {
            String strNum = Integer.toString(num);
            for (char c : strNum.toCharArray()) {
                if (c == &#39;7&#39;) {
                    answer++;
                }
            }
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 7의 개수
public class Main121 {
    public int solution(int[] array) {
        int answer = 0;
        for (int num : array) {
            String strNum = Integer.toString(num);
            for (char c : strNum.toCharArray()) {
                if (c == &#39;7&#39;) {
                    answer++;
                }
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main121 solver = new Main121();
        int[] testArray1 = {7, 77, 17};
        int[] testArray2 = {10, 29};

        System.out.println(solver.solution(testArray1)); // 4 출력 예상
        System.out.println(solver.solution(testArray2)); // 0 출력 예상
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/3e9d001b-549a-4749-b865-f443b5dee5e3/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 잘라서 배열로 저장하기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%98%EB%9D%BC%EC%84%9C-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%98%EB%9D%BC%EC%84%9C-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 22 Aug 2026 17:19:26 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a7615ca3-7099-4196-981b-eddab6e76328/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>입력과 변수 준비
my_str은 자를 문자열이고, n은 자를 길이를 의미한다.
length 변수에 my_str의 총 길이를 저장한다.
전체 문자열을 몇 개 조각으로 나눌지 parts 변수에 계산하는데, (length + n - 1) / n을 통해 나머지까지 감안해 올림 연산처럼 개수를 구한다.
배열 생성
parts 개수만큼 크기가 지정된 문자열 배열 answer를 생성한다.
문자열 자르기
반복문을 이용해 0부터 parts - 1까지 순회하며 문자열 조각을 자른다.
각 조각의 시작 인덱스 start는 i * n으로 계산한다.
끝 인덱스 end는 start + n이지만, 마지막 조각인 경우 전체 문자열 길이(length)를 넘지 않도록 Math.min을 사용한다.
substring 메서드로 start부터 end 전까지 자른 부분 문자열을 배열에 저장한다.
결과 반환
잘라 저장한 문자열 배열을 return하여 최종 결과를 반환한다.
main 메서드 동작
Main120 클래스 인스턴스를 생성한다.
첫 번째 예제 문자열 &quot;abc1Addfggg4556b&quot;와 n=6을 넣어 결과를 받고, Arrays.toString()으로 배열 전체를 한 줄에 출력한다.
두 번째 예제 &quot;abcdef123&quot;와 n=3에 대해서도 같은 방식으로 실행 후 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String[] solution(String my_str, int n) {
        int length = my_str.length();
        int parts = (length + n - 1) / n;
        String[] answer = new String[parts];

        for (int i = 0; i &lt; parts; i++) {
            int start = i * n;
            int end = Math.min(start + n, length);
            answer[i] = my_str.substring(start, end);
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.Arrays;

// 프로그래머스 잘라서 배열로 저장하기
public class Main120 {
    public String[] solution(String my_str, int n) {
        int length = my_str.length();
        int parts = (length + n - 1) / n;
        String[] answer = new String[parts];

        for (int i = 0; i &lt; parts; i++) {
            int start = i * n;
            int end = Math.min(start + n, length);
            answer[i] = my_str.substring(start, end);
        }
        return answer;
    }

    public static void main(String[] args) {
        Main120 sol = new Main120();

        String my_str1 = &quot;abc1Addfggg4556b&quot;;
        int n1 = 6;
        String[] result1 = sol.solution(my_str1, n1);
        System.out.println(Arrays.toString(result1));

        String my_str2 = &quot;abcdef123&quot;;
        int n2 = 3;
        String[] result2 = sol.solution(my_str2, n2);
        System.out.println(Arrays.toString(result2));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/94cfaf31-943f-4b76-ace5-dc17cab16c72/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 문자열 밀기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%80%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%80%EA%B8%B0</guid>
            <pubDate>Fri, 21 Aug 2026 16:30:55 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/fd15cf44-383d-4136-8376-a63210b41f1d/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 &quot;hello&quot;에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 &quot;ohell&quot;이 됩니다.
이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>main 메서드에서는 문자열 배열 A_arr과 B_arr에 테스트할 문자열 쌍을 저장한다.
반복문을 통해 각 쌍에 대해 solution 메서드를 호출하여 결과를 얻고, 그 결과를 출력한다.
solution 메서드는 두 문자열 A와 B를 받아, 문자열 A를 오른쪽으로 몇 번 밀면 B가 되는지를 계산한다.
우선 A와 B가 같으면 0을 반환한다. 밀지 않아도 되기 때문이다.
다음으로 문자열 길이만큼 반복하면서 마지막 문자를 잘라 맨 앞으로 옮기는 밀기 작업을 수행한다.
매 회전마다 밀린 문자열이 B와 같은지 비교하여 같으면 현재 밀기 횟수 i를 반환한다.
반복이 끝나도록 B가 되지 않으면 -1을 반환하여 불가능함을 뜻한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String A, String B) {
        if (A.equals(B)) return 0;
        int length = A.length();
        String rotated = A;

        for (int i = 1; i &lt; length; i++) {
            rotated = rotated.charAt(length - 1) + rotated.substring(0, length - 1);

            if (rotated.equals(B)) {
                return i;
            }
        }

        return -1;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 문자열 밀기
public class Main119 {
    public static void main(String[] args) {
        String[] A_arr = {&quot;hello&quot;, &quot;apple&quot;, &quot;atat&quot;, &quot;abc&quot;};
        String[] B_arr = {&quot;ohell&quot;, &quot;elppa&quot;, &quot;tata&quot;, &quot;abc&quot;};

        for (int i = 0; i &lt; A_arr.length; i++) {
            int result = solution(A_arr[i], B_arr[i]);
            System.out.println(result);
        }
    }

    public static int solution(String A, String B) {
        if (A.equals(B)) return 0;
        int length = A.length();
        String rotated = A;

        for (int i = 1; i &lt; length; i++) {
            rotated = rotated.charAt(length - 1) + rotated.substring(0, length - 1);

            if (rotated.equals(B)) {
                return i;
            }
        }

        return -1;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/da51d06b-1274-4b38-adeb-d77e55438e6a/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 종이 자르기]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A2%85%EC%9D%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A2%85%EC%9D%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0</guid>
            <pubDate>Thu, 20 Aug 2026 15:09:51 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/405a3bb6-6a2e-4782-811d-b714cc6d7e30/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다.
예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>main 메서드는 Java 프로그램의 시작점이다.
Main118 객체를 생성하고 solution 메서드를 호출하여 결과를 출력한다.
solution(int M, int N) 메서드는 M x N 크기의 종이를 1 x 1 크기로 자르기 위해 필요한 최소 가위질 횟수를 계산하는 로직을 포함한다.
핵심 수식 return M * N - 1;은 전체 조각 개수가 M 곱하기 N개라는 점을 이용했다.
처음 종이는 한 조각이므로 1개, 각 가위질로 조각 수가 1씩 증가한다.
따라서 조각을 M×N개로 만들려면 M×N−1번 가위질이 필요하다는 의미다.
main에서 세 개의 테스트 케이스를 실행해 각각 예상 결과를 출력한다:
2x2 종이에서 3번
2x5 종이에서 9번
1x1 종이에서 0번</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int M, int N) {
        return M * N - 1;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

// 프로그래머스 종이 자르기
public class Main118 {
    public static void main(String[] args) {
        Main118 sol = new Main118();

        // 예시 테스트
        System.out.println(sol.solution(2, 2)); // 예상 출력 3
        System.out.println(sol.solution(2, 5)); // 예상 출력 9
        System.out.println(sol.solution(1, 1)); // 예상 출력 0
    }

    public int solution(int M, int N) {
        return M * N - 1;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8e81f77d-c93c-4daa-a10c-524ee8ba6ccf/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 옹알이 (1)]]></title>
            <link>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%98%B9%EC%95%8C%EC%9D%B4-1</link>
            <guid>https://velog.io/@youngjun_10/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%98%B9%EC%95%8C%EC%9D%B4-1</guid>
            <pubDate>Wed, 19 Aug 2026 15:42:28 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/6cd1016d-05bd-4a2f-8b44-c116c334b2f4/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다.
조카는 아직 &quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot; 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다.
문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 문자열 배열 babbling을 입력받아 유효한 발음 단어 개수를 반환한다.
먼저, 검사할 음절들을 sounds 배열에 &quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot;로 정의한다.
정규표현식 ^(aya|ye|woo|ma)+$을 컴파일하여 pattern에 저장한다.
이 패턴은 입력 문자열 전체가 이 네 가지 음절 조합으로만 이루어졌는지를 검사한다.
입력 배열 babbling의 각 단어에 대해 다음 절차를 수행한다.
pattern.matcher(word)로 단어가 패턴에 완전히 부합하는지 확인한다. 부합하지 않으면 건너뛴다.
패턴에 맞으면 각 음절에 대해 문자열 내 등장 횟수를 직접 센다.
while 루프를 돌면서 해당 음절의 위치를 찾아 등장 횟수를 누적하는데, 중복 사용 여부를 판단하기 위함이다.
만약 한 음절이 2번 이상 등장하면 유효하지 않은 단어로 간주하고 검사 종료한다.
모든 음절이 중복 없이 최대 한 번씩만 등장하면 answer를 1 증가시킨다.
최종적으로 answer를 반환한다.
main 메서드에서는 테스트 케이스 두 개를 입력하고, solution을 통해 나온 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.regex.Pattern;
import java.util.regex.Matcher;

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        String[] sounds = {&quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot;};
        Pattern pattern = Pattern.compile(&quot;^(aya|ye|woo|ma)+$&quot;);

        for (String word : babbling) {
            Matcher matcher = pattern.matcher(word);
            if (!matcher.matches()) {
                continue;
            }

            boolean valid = true;
            for (String sound : sounds) {
                int count = 0;
                int index = 0;
                while ((index = word.indexOf(sound, index)) != -1) {
                    count++;
                    index += sound.length();
                    if (count &gt; 1) {
                        valid = false;
                        break;
                    }
                }
                if (!valid) break;
            }

            if (valid) answer++;
        }

        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers.programmers2;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

// 프로그래머스 옹알이 (1)
public class Main117 {
    public static void main(String[] args) {
        String[] babbling1 = {&quot;aya&quot;, &quot;yee&quot;, &quot;u&quot;, &quot;maa&quot;, &quot;wyeoo&quot;};
        String[] babbling2 = {&quot;ayaye&quot;, &quot;uuuma&quot;, &quot;ye&quot;, &quot;yemawoo&quot;, &quot;ayaa&quot;};

        // 결과 출력
        System.out.println(solution(babbling1)); // 1
        System.out.println(solution(babbling2)); // 3
    }

    public static int solution(String[] babbling) {
        int answer = 0;
        String[] sounds = {&quot;aya&quot;, &quot;ye&quot;, &quot;woo&quot;, &quot;ma&quot;};
        Pattern pattern = Pattern.compile(&quot;^(aya|ye|woo|ma)+$&quot;);

        for (String word : babbling) {
            Matcher matcher = pattern.matcher(word);
            if (!matcher.matches()) {
                continue;
            }

            boolean valid = true;
            for (String sound : sounds) {
                int count = 0;
                int index = 0;
                while ((index = word.indexOf(sound, index)) != -1) {
                    count++;
                    index += sound.length();
                    if (count &gt; 1) {
                        valid = false;
                        break;
                    }
                }
                if (!valid) break;
            }

            if (valid) answer++;
        }

        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f2fac4e5-8fc4-4c53-94d7-45cc90dd4306/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
    </channel>
</rss>