<?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>Thu, 28 May 2026 15:12:05 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-%EB%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9D%B4%EC%96%B4-%EB%B6%99%EC%97%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0-hh52xshw</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%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9D%B4%EC%96%B4-%EB%B6%99%EC%97%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0-hh52xshw</guid>
            <pubDate>Thu, 28 May 2026 15:12:05 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d225a2ba-f04e-47d8-88e2-d48905ef5220/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다.
parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다.
각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>빈 문자열 answer를 선언해 문자열 연결 결과를 저장한다.
for 반복문을 통해 my_strings 배열 각 원소에 차례로 접근한다.
parts[i]에 저장된 시작 인덱스(start)와 끝 인덱스(end)를 꺼낸다.
substring(start, end + 1) 메서드를 이용해 my_strings[i]에서 시작부터 끝까지 포함한 부분 문자열을 추출한다.
자바에서 substring의 두 번째 인자는 끝 인덱스 바로 다음 위치이므로 끝 인덱스에 1을 더해서 사용해야 한다.
추출한 부분 문자열을 answer에 계속 이어 붙여 나간다.
반복문이 끝난 후 완성된 answer를 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        String answer = &quot;&quot;;

        for (int i = 0; i &lt; my_strings.length; i++) {
            int start = parts[i][0];
            int end = parts[i][1];
            String part = my_strings[i].substring(start, end + 1);
            answer += part;
        }

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

// 프로그래머스 부분 문자열 이어 붙여 문자열 만들기
public class Main34 {
    public static void main(String[] args) {
        String[] my_strings = {&quot;progressive&quot;, &quot;hamburger&quot;, &quot;hammer&quot;, &quot;ahocorasick&quot;};
        int[][] parts = {{0, 4}, {1, 2}, {3, 5}, {7, 7}};

        String result = solution(my_strings, parts);
        System.out.println(result);  // 예상 출력: programmers
    }

    public static String solution(String[] my_strings, int[][] parts) {
        String answer = &quot;&quot;;

        for (int i = 0; i &lt; my_strings.length; i++) {
            int start = parts[i][0];
            int end = parts[i][1];
            String part = my_strings[i].substring(start, end + 1);
            answer += part;
        }

        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c8b3d359-a54d-43b0-951a-8518ce792aa0/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 배열 만들기 5]]></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-%EB%A7%8C%EB%93%A4%EA%B8%B0-5</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-%EB%A7%8C%EB%93%A4%EA%B8%B0-5</guid>
            <pubDate>Wed, 27 May 2026 21:02:53 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/fe217835-2db8-41cd-aba3-f593b80149fe/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 배열 intStrs와 정수 k, s, l가 주어집니다.
intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다.
이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main33 클래스는 solution 메서드를 포함한다.
solution 메서드는 문자열 배열 intStrs와 정수 k, 인덱스 s, 길이 l을 입력으로 받는다.
각 문자열 원소에서 인덱스 s부터 길이 l만큼 부분 문자열을 잘라낸 후 정수로 변환한다.
이 정수가 k보다 클 경우 동적 배열 resultList에 저장한다.
반복이 끝나면 리스트를 정수 배열로 변환해 반환한다.
main 메서드에서는 테스트용으로 예제 값을 지정하고, solution을 호출하여 결과 배열을 Arrays.toString()으로 출력한다.
출력 결과는 배열 형태인 [56789, 99999] 같이 한 줄에 결과가 보여지도록 한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        ArrayList&lt;Integer&gt; resultList = new ArrayList&lt;&gt;();

        for (String str : intStrs) {
            String sub = str.substring(s, s + l);
            int num = Integer.parseInt(sub);

            if (num &gt; k) {
                resultList.add(num);
            }
        }

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

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

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

// 프로그래머스 배열 만들기 5
public class Main33 {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        ArrayList&lt;Integer&gt; resultList = new ArrayList&lt;&gt;();

        for (String str : intStrs) {
            String sub = str.substring(s, s + l);
            int num = Integer.parseInt(sub);

            if (num &gt; k) {
                resultList.add(num);
            }
        }

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

        return answer;
    }

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

        String[] intStrs = {&quot;0123456789&quot;, &quot;9876543210&quot;, &quot;9999999999999&quot;};
        int k = 50000, s = 5, l = 5;
        int[] result = sol.solution(intStrs, k, s, l);
        System.out.println(Arrays.toString(result));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/4871698e-40ae-4de9-a38d-85786544d119/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%97%AC%EB%9F%AC-%EB%B2%88-%EB%92%A4%EC%A7%91%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-%EC%97%AC%EB%9F%AC-%EB%B2%88-%EB%92%A4%EC%A7%91%EA%B8%B0</guid>
            <pubDate>Tue, 26 May 2026 15:31:47 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c36db1ac-0987-4ef2-999c-e97f9813659e/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다.
queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다.
my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main32 클래스는 자바 애플리케이션 진입점인 main 메서드를 포함한다.
main 메서드 안에서 문제 해결용 Solution 객체를 생성한다.
예시의 my_string과 queries 배열을 정의한다.
solution 메서드를 호출해 결과 문자열을 얻는다.
결과를 System.out.println으로 출력하여 콘솔에서 확인할 수 있다.
Solution 클래스의 solution 메서드는 StringBuilder를 이용해 입력 문자열을 가변적으로 처리한다.
각 쿼리 [s, e] 구간의 문자열을 양끝 문자부터 교환하여 뒤집는다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String my_string, int[][] queries) {
        StringBuilder sb = new StringBuilder(my_string);

        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];

            while (s &lt; e) {
                char temp = sb.charAt(s);
                sb.setCharAt(s, sb.charAt(e));
                sb.setCharAt(e, temp);
                s++;
                e--;
            }
        }

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

// 프로그래머스 문자열 여러 번 뒤집기
public class Main32 {
    public static void main(String[] args) {
        Solution5 solution5 = new Solution5();

        String my_string = &quot;rermgorpsam&quot;;
        int[][] queries = { {2, 3}, {0, 7}, {5, 9}, {6, 10} };

        String result = solution5.solution(my_string, queries);
        System.out.println(result);  // &quot;programmers&quot; 출력 예상
    }
}

class Solution5 {
    public String solution(String my_string, int[][] queries) {
        StringBuilder sb = new StringBuilder(my_string);

        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];

            while (s &lt; e) {
                char temp = sb.charAt(s);
                sb.setCharAt(s, sb.charAt(e));
                sb.setCharAt(e, temp);
                s++;
                e--;
            }
        }
        return sb.toString();
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f720b59b-42b7-40b7-97a2-a90f1997723a/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 9로 나눈 나머지]]></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-9%EB%A1%9C-%EB%82%98%EB%88%88-%EB%82%98%EB%A8%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-9%EB%A1%9C-%EB%82%98%EB%88%88-%EB%82%98%EB%A8%B8%EC%A7%80</guid>
            <pubDate>Mon, 25 May 2026 21:05:31 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/538bb383-6bc7-472f-9ff7-6411c4fd3d99/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 입력된 문자열 number의 각 자리 숫자를 하나씩 꺼내 더한다.
각 문자의 숫자 값은 charAt(i) - &#39;0&#39;로 구한다. 예를 들어 문자 &#39;3&#39;은 숫자 3으로 변환된다.
모든 자리 숫자 합이 계산되면, 합을 9로 나눈 나머지를 반환한다.
main 메서드에서 solution 메서드를 호출해 테스트 케이스를 실행하고, 결과를 콘솔에 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String number) {
        int sum = 0;
        for (int i = 0; i &lt; number.length(); i++) {
            sum += number.charAt(i) - &#39;0&#39;;
        }
        return sum % 9;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 9로 나눈 나머지
public class Main31 {
    public static void main(String[] args) {
        Main31 sol = new Main31();
        String testNumber1 = &quot;123&quot;;
        String testNumber2 = &quot;78720646226947352489&quot;;

        System.out.println(sol.solution(testNumber1)); // 6 출력
        System.out.println(sol.solution(testNumber2)); // 2 출력
    }

    public int solution(String number) {
        int sum = 0;
        for (int i = 0; i &lt; number.length(); i++) {
            sum += number.charAt(i) - &#39;0&#39;;
        }
        return sum % 9;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/3047ce54-b515-498f-8ad0-9ec6792ed3ba/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%B8%80%EC%9E%90-%EC%9D%B4%EC%96%B4-%EB%B6%99%EC%97%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%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%B8%80%EC%9E%90-%EC%9D%B4%EC%96%B4-%EB%B6%99%EC%97%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Sun, 24 May 2026 22:07:21 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/b1a75b3e-2082-4885-b7e9-7b7ece48f3db/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다.
my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>public class Main30
해당 문제를 위한 메인 클래스 이름을 Main30으로 하였다.
public String solution(String my_string, int[] index_list)
문제에서 요구하는 메인 함수이며, 문자열과 인덱스 배열을 받아 문자열을 조합해 반환한다.
StringBuilder answer = new StringBuilder();
문자열을 효율적으로 이어붙이기 위해 StringBuilder를 사용하였다.
for (int index : index_list) { answer.append(my_string.charAt(index)); }
index_list에 있는 각각의 인덱스 위치의 문자를 꺼내 answer에 추가하는 반복문이다.
return answer.toString();
StringBuilder로 만든 결과를 String으로 변환하여 최종 반환한다.
public static void main(String[] args)
프로그램 실행 진입점으로, solution 메서드를 테스트하기 위해 두 가지 예시 입력을 만들고 결과를 출력하였다.
Main30 sol = new Main30();
인스턴스 메서드인 solution을 호출하기 위해 Main30 클래스의 객체를 생성하였다.
System.out.println()
결과 문자열을 콘솔에 출력하도록 하였다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String my_string, int[] index_list) {
        StringBuilder answer = new StringBuilder();
        for (int index : index_list) {
            answer.append(my_string.charAt(index));
        }
        return answer.toString();
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 글자 이어 붙여 문자열 만들기
public class Main30 {
    public String solution(String my_string, int[] index_list) {
        StringBuilder answer = new StringBuilder();
        for (int index : index_list) {
            answer.append(my_string.charAt(index));
        }
        return answer.toString();
    }

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

        String my_string1 = &quot;cvsgiorszzzmrpaqpe&quot;;
        int[] index_list1 = {16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7};
        System.out.println(sol.solution(my_string1, index_list1));  // programmers 출력

        String my_string2 = &quot;zpiaz&quot;;
        int[] index_list2 = {1, 2, 0, 0, 3};
        System.out.println(sol.solution(my_string2, index_list2));  // pizza 출력
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a4e8eed4-6ab6-4e4f-bb42-f8c5fedff4d6/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 주사위 게임 3]]></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%A3%BC%EC%82%AC%EC%9C%84-%EA%B2%8C%EC%9E%84-3</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%A3%BC%EC%82%AC%EC%9C%84-%EA%B2%8C%EC%9E%84-3</guid>
            <pubDate>Sat, 23 May 2026 22:18:30 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f6e2ab22-c900-4ccb-aa64-9a690105ed30/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.
네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.
주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.
네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.
네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 a, b, c, d로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main29 클래스는 programmers 패키지에 포함된다.
main 메서드 내에서 Solution 클래스를 생성하고, 주어진 테스트 데이터를 solution 메서드에 넣어 결과를 출력한다.
Solution 클래스는 static class로 Main29 내부에 포함되어 있다.
이렇게 하면 별도의 파일 분리 없이 한 곳에서 관리할 수 있다.
solution 메서드는 네 주사위 숫자를 입력받아, 각 숫자 별 등장 횟수를 HashMap에 저장한다.
등장한 숫자의 종류 개수(counts.size())를 기준으로 점수 계산 규칙을 적용한다.
1개: 네 주사위가 모두 같아서 1111 × 숫자 점수이다.
2개: 세 개가 같고 한 개가 다르거나, 두 개씩 두 쌍으로 나오는 경우를 구분해 각각 점수를 계산한다.
3개: 한 쌍만 같고 나머지 두 숫자가 다르므로 나머지 두 숫자의 곱을 점수로 한다.
4개: 모두 다르기에 가장 작은 숫자로 점수를 정한다.
위 규칙은 문제 설명과 완벽히 일치한다.
메인 메서드에서 여러 예제를 출력해 정상 동작을 바로 확인할 수 있도록 했다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.HashMap;
import java.util.Map;

class Solution {
    public int solution(int a, int b, int c, int d) {
        int answer = 0;
        int[] dice = {a, b, c, d};
        Map&lt;Integer, Integer&gt; counts = new HashMap&lt;&gt;();

        for (int num : dice) {
            counts.put(num, counts.getOrDefault(num, 0) + 1);
        }


        if (counts.size() == 1) {
            int p = dice[0];
            answer = 1111 * p;
        } else if (counts.size() == 2) {
            for (Map.Entry&lt;Integer, Integer&gt; entry : counts.entrySet()) {
                if (entry.getValue() == 3) {
                    int p = entry.getKey();
                    int q = 0;
                    for (int key : counts.keySet()) {
                        if (key != p) q = key;
                    }
                    answer = (10 * p + q) * (10 * p + q);
                    return answer;
                }
            }

            int[] keys = counts.keySet().stream().mapToInt(Integer::intValue).toArray();
            int p = keys[0];
            int q = keys[1];
            answer = (p + q) * Math.abs(p - q);
        } else if (counts.size() == 3) {
            int p = 0, q = 0, r = 0;
            for (Map.Entry&lt;Integer, Integer&gt; entry : counts.entrySet()) {
                int key = entry.getKey();
                int val = entry.getValue();
                if (val == 2) {
                    p = key;
                } else {
                    if (q == 0) q = key;
                    else r = key;
                }
            }
            answer = q * r;
        } else {
            int min = Integer.MAX_VALUE;
            for (int num : dice) {
                if (num &lt; min) min = num;
            }
            answer = min;
        }

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

import java.util.HashMap;
import java.util.Map;

// 프로그래머스 주사위 게임 3
public class Main29 {
    public static void main(String[] args) {
        Solution sol = new Solution();

        // 테스트용 출력
        System.out.println(sol.solution(2, 2, 2, 2)); // 2222
        System.out.println(sol.solution(4, 1, 4, 4)); // 1681
        System.out.println(sol.solution(6, 3, 3, 6)); // 27
        System.out.println(sol.solution(2, 5, 2, 6)); // 30
        System.out.println(sol.solution(6, 4, 2, 5)); // 2
    }

    static class Solution {
        public int solution(int a, int b, int c, int d) {
            int answer = 0;
            int[] dice = {a, b, c, d};
            Map&lt;Integer, Integer&gt; counts = new HashMap&lt;&gt;();

            for (int num : dice) {
                counts.put(num, counts.getOrDefault(num, 0) + 1);
            }

            if (counts.size() == 1) {
                int p = dice[0];
                answer = 1111 * p;
            } else if (counts.size() == 2) {
                for (Map.Entry&lt;Integer, Integer&gt; entry : counts.entrySet()) {
                    if (entry.getValue() == 3) {
                        int p = entry.getKey();
                        int q = 0;
                        for (int key : counts.keySet()) {
                            if (key != p) q = key;
                        }
                        answer = (10 * p + q) * (10 * p + q);
                        return answer;
                    }
                }

                int[] keys = counts.keySet().stream().mapToInt(Integer::intValue).toArray();
                int p = keys[0];
                int q = keys[1];
                answer = (p + q) * Math.abs(p - q);
            } else if (counts.size() == 3) {
                int p = 0, q = 0, r = 0;
                for (Map.Entry&lt;Integer, Integer&gt; entry : counts.entrySet()) {
                    int key = entry.getKey();
                    int val = entry.getValue();
                    if (val == 2) {
                        p = key;
                    } else {
                        if (q == 0) q = key;
                        else r = key;
                    }
                }
                answer = q * r;
            } else {
                int min = Integer.MAX_VALUE;
                for (int num : dice) {
                    if (num &lt; min) min = num;
                }
                answer = min;
            }

            return answer;
        }
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/be6b15b3-63e8-4ef6-b447-aae670a3db74/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%84%EB%8B%A8%ED%95%9C-%EB%85%BC%EB%A6%AC-%EC%97%B0%EC%82%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%84%EB%8B%A8%ED%95%9C-%EB%85%BC%EB%A6%AC-%EC%97%B0%EC%82%B0</guid>
            <pubDate>Fri, 22 May 2026 22:31:34 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/3749a1ce-ae11-4b41-8cf5-770e72fd5faa/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요.
(x1 ∨ x2) ∧ (x3 ∨ x4)</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main28 클래스 내에 solution 메서드를 선언하여 네 개의 boolean 값을 매개변수로 받는다.
문제의 조건에 따라 (x1 || x2) &amp;&amp; (x3 || x4) 논리식을 자바의 논리 연산자로 그대로 구현했다.
main 메서드에서는 Main28 클래스의 인스턴스를 생성하여, 문제에서 주어진 입력 예를 테스트한다.
System.out.println을 통해 결과를 출력하여 메서드의 반환 값을 직접 확인할 수 있다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        return (x1 || x2) &amp;&amp; (x3 || x4);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 간단한 논리 연산
public class Main28 {
    // 문제에서 요구하는 논리 연산 메서드 정의
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        // (x1 OR x2) AND (x3 OR x4) 의 논리식을 그대로 구현함
        return (x1 || x2) &amp;&amp; (x3 || x4);
    }

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

        // 테스트 예제 1
        boolean result1 = sol.solution(false, true, true, true);
        System.out.println(result1);  // true 출력

        // 테스트 예제 2
        boolean result2 = sol.solution(true, false, false, false);
        System.out.println(result2);  // false 출력
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/10a4e95d-15a2-4f4a-804c-295450a7e50d/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 배열 만들기 4]]></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-%EB%A7%8C%EB%93%A4%EA%B8%B0-4</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-%EB%A7%8C%EB%93%A4%EA%B8%B0-4</guid>
            <pubDate>Thu, 21 May 2026 15:52:59 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c653bd11-b103-4cbe-a761-fe287269f3d9/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다.
변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.
만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.
stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.
위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>주어진 정수 배열 arr를 순차적으로 처리하여 새로운 배열을 만드는 알고리즘이다.
배열을 처음부터 끝까지 반복하면서, 결과를 담을 stk 리스트에 값을 추가하거나 제거하는 방식을 따른다.
먼저, stk가 비어 있으면 현재 원소를 바로 추가하고 다음 원소로 넘어간다.
stk에 원소가 있을 때는 마지막 원소와 현재 원소를 비교한다.
마지막 원소가 현재 원소보다 작으면 현재 원소를 추가하고 다음 원소로 이동한다.
반면, 마지막 원소가 크거나 같으면 stk의 마지막 원소를 제거한다.
이 과정을 배열 길이만큼 반복하여 최종적으로 요구 조건에 맞는 배열을 만든다.
마지막에는 리스트 형태인 stk를 정수 배열로 변환해 반환한다.
main 메서드에서는 예시 배열 [1, 4, 2, 5, 3]을 이용해 solution 함수 결과를 출력한다.
실행 결과는 [1, 2, 3]으로, 주어진 문제에서 요구한 조건에 따라 잘 작동함을 확인할 수 있다.
배열 출력 형식을 대괄호와 쉼표로 맞추어 사람이 읽기 편하게 처리했다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] arr) {
        List&lt;Integer&gt; stk = new ArrayList&lt;&gt;();
        int i = 0;

        while (i &lt; arr.length) {
            if (stk.isEmpty()) {
                stk.add(arr[i]);
                i++;
            } else {
                int last = stk.get(stk.size() - 1);
                if (last &lt; arr[i]) {
                    stk.add(arr[i]);
                    i++;
                } else {
                    stk.remove(stk.size() - 1);
                }
            }
        }

        int[] answer = new int[stk.size()];
        for (int j = 0; j &lt; stk.size(); j++) {
            answer[j] = stk.get(j);
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

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

// 프로그래머스 배열 만들기 4
public class Main27 {
    // 주어진 조건에 따라 배열을 처리하는 메서드
    public static int[] solution(int[] arr) {
        List&lt;Integer&gt; stk = new ArrayList&lt;&gt;();
        int i = 0;

        // i가 arr의 길이보다 작을 동안 반복
        while (i &lt; arr.length) {
            if (stk.isEmpty()) {  // stk이 비어 있으면 arr[i] 추가 후 i 증가
                stk.add(arr[i]);
                i++;
            } else {
                int last = stk.get(stk.size() - 1); // stk 마지막 원소 확인
                if (last &lt; arr[i]) {   // 마지막 원소가 arr[i]보다 작으면 추가 후 i 증가
                    stk.add(arr[i]);
                    i++;
                } else {   // 마지막 원소가 arr[i]보다 크거나 같으면 마지막 원소 제거
                    stk.remove(stk.size() - 1);
                }
            }
        }

        // 리스트를 배열로 변환하여 반환
        int[] answer = new int[stk.size()];
        for (int j = 0; j &lt; stk.size(); j++) {
            answer[j] = stk.get(j);
        }
        return answer;
    }

    public static void main(String[] args) {
        int[] arr = {1, 4, 2, 5, 3};
        int[] result = solution(arr);

        System.out.print(&quot;[&quot;);
        for (int i = 0; i &lt; result.length; i++) {
            System.out.print(result[i]);
            if (i != 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/f6559424-164c-4d05-a925-b13aa6da9345/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%BD%9C%EB%9D%BC%EC%B8%A0-%EC%88%98%EC%97%B4-%EB%A7%8C%EB%93%A4%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%BD%9C%EB%9D%BC%EC%B8%A0-%EC%88%98%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Wed, 20 May 2026 15:29:02 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/36453a77-f112-44d0-b47a-399004fc06a8/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다.
그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다.
계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다.
임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>콜라츠 수열을 저장하기 위해 ArrayList&lt;Integer&gt;를 사용하였다.
주어진 시작 값 n을 변수 x에 할당하고, 리스트에 첫 값을 추가하였다.
while (x != 1) 조건으로 x가 1이 될 때까지 아래 규칙대로 값을 갱신하였다.
x가 짝수일 때는 2로 나누었고, 홀수일 때는 3 * x + 1로 변경하였다.
매번 새로 계산된 값을 리스트에 추가하였다.
모든 값이 추가되면 리스트를 int[] 배열로 변환하여 반환하였다.
main 메서드에서 solution(10) 실행 시, 배열을 [10, 5, 16, 8, 4, 2, 1] 형태로 콘솔에 출력하도록 Arrays.toString()을 사용하였다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public int[] solution(int n) {
        ArrayList&lt;Integer&gt; sequence = new ArrayList&lt;&gt;();
        int x = n;
        sequence.add(x);

        while (x != 1) {
            if (x % 2 == 0) {
                x = x / 2;
            } else {
                x = 3 * x + 1;
            }
            sequence.add(x);
        }

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

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

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

// 프로그래머스 콜라츠 수열 만들기
public class Main26 {
    public static int[] solution(int n) {
        ArrayList&lt;Integer&gt; sequence = new ArrayList&lt;&gt;();
        int x = n;
        sequence.add(x);

        while (x != 1) {
            if (x % 2 == 0) {
                x = x / 2;
            } else {
                x = 3 * x + 1;
            }
            sequence.add(x);
        }

        // 출력용 배열을 바로 만들어서 출력할 수 있도록 변경하였다.
        int[] answer = new int[sequence.size()];
        for (int i = 0; i &lt; sequence.size(); i++) {
            answer[i] = sequence.get(i);
        }

        // 원하는 배열 형태 문자열를 출력하기 위해 Arrays.toString()을 사용하였다.
        System.out.println(Arrays.toString(answer));

        return answer;
    }

    public static void main(String[] args) {
        solution(10);  // [10, 5, 16, 8, 4, 2, 1] 형식으로 콘솔 출력된다.
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/47a373ef-fa63-4bc1-9d79-7979023232a7/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%B9%B4%EC%9A%B4%ED%8A%B8-%EC%97%85</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%B9%B4%EC%9A%B4%ED%8A%B8-%EC%97%85</guid>
            <pubDate>Wed, 20 May 2026 04:29:11 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/00198e3c-a86d-4025-b62a-46b5bee89b0b/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 start_num와 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 두 정수 start_num과 end_num을 입력받아, 그 사이에 있는 모든 정수를 차례대로 담은 배열을 생성해 반환한다.
배열의 크기는 포함해야 할 숫자의 개수를 정확히 반영하기 위해 end_num - start_num + 1로 계산한다.
반복문을 이용해 배열 인덱스마다 start_num부터 1씩 증가한 값을 넣는다.
main 메서드는 프로그램 실행 시 가장 먼저 호출되는 진입점 역할을 한다.
여기서는 solution을 3부터 10까지의 숫자를 담은 배열을 만들고, 이를 Arrays.toString 메서드로 문자열로 바꿔 출력한다.
이 출력 결과는 [3, 4, 5, 6, 7, 8, 9, 10]과 같이 화면에 표시된다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int start_num, int end_num) {
        int length = end_num - start_num + 1;
        int[] answer = new int[length];

        for (int i = 0; i &lt; length; i++) {
            answer[i] = start_num + i;
        }

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

import java.util.Arrays;

// 프로그래머스 카운트 업
public class Main25 {
    public static int[] solution(int start_num, int end_num) {
        int length = end_num - start_num + 1;
        int[] answer = new int[length];

        for (int i = 0; i &lt; length; i++) {
            answer[i] = start_num + i;
        }

        return answer;
    }

    public static void main(String[] args) {
        // 예시: 3부터 10까지 배열 생성 후 출력
        int start = 3;
        int end = 10;
        int[] result = solution(start, end);

        // 배열 내용을 문자열로 변환해 출력한다
        System.out.println(Arrays.toString(result));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/61439e78-b452-4565-b5a0-6812605f831e/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 배열 만들기 2]]></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-%EB%A7%8C%EB%93%A4%EA%B8%B0-2</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-%EB%A7%8C%EB%93%A4%EA%B8%B0-2</guid>
            <pubDate>Mon, 18 May 2026 23:37:14 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/09e0c9c9-2fe0-4cec-88bf-5a4b95669016/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 &quot;0&quot;과 &quot;5&quot;로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main24 클래스는 프로그램 실행 진입점이며, main 메서드에서 두 가지 테스트 케이스를 실행한다.
arrayToString 메서드는 결과 배열을 사람이 보기 쉬운 [5, 50, 55] 형식 문자열로 변환해서 출력한다.
Solution4 클래스 안에 문제를 푸는 solution 메서드와 그 보조 메서드가 구현되어 있다.
solution 메서드는 l부터 r까지 모든 정수를 순회한다.
각 숫자를 isZeroOrFive 조건 검사 메서드에 전달해 0과 5로만 이루어졌는지 판단한다.
조건을 만족하면 result 리스트에 추가한다.
검사 후, 결과 리스트가 비어 있으면 int[]{-1}을 반환한다.
그렇지 않으면 리스트를 기본 배열로 변환해 반환한다.
isZeroOrFive는 정수를 문자열로 바꾼 후, 각 자리 문자가 &#39;0&#39; 또는 &#39;5&#39;가 아닌지 검사하여 조건 부합 여부를 판단한다.
모든 자릿수가 &#39;0&#39; 또는 &#39;5&#39;면 true, 하나라도 다르면 false를 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public int[] solution(int l, int r) {
        ArrayList&lt;Integer&gt; result = new ArrayList&lt;&gt;();
        for (int num = l; num &lt;= r; num++) {
            if (isZeroOrFive(num)) {
                result.add(num);
            }
        }

        if (result.isEmpty()) {
            return new int[]{-1};
        }

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

    private boolean isZeroOrFive(int num) {
        String str = String.valueOf(num);
        for (int i = 0; i &lt; str.length(); i++) {
            char c = str.charAt(i);
            if (c != &#39;0&#39; &amp;&amp; c != &#39;5&#39;) {
                return false;
            }
        }
        return true;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

import java.util.ArrayList;

// 프로그래머스 배열 만들기 2
public class Main24 {
    public static void main(String[] args) {
        Solution4 solution4 = new Solution4();

        int l1 = 5, r1 = 555;
        int[] result1 = solution4.solution(l1, r1);
        System.out.println(arrayToString(result1));

        int l2 = 10, r2 = 20;
        int[] result2 = solution4.solution(l2, r2);
        System.out.println(arrayToString(result2));
    }

    private static String arrayToString(int[] arr) {
        if (arr == null || arr.length == 0) {
            return &quot;[]&quot;;
        }
        StringBuilder sb = new StringBuilder();
        sb.append(&quot;[&quot;);
        for (int i = 0; i &lt; arr.length; i++) {
            sb.append(arr[i]);
            if (i != arr.length - 1) {
                sb.append(&quot;, &quot;);
            }
        }
        sb.append(&quot;]&quot;);
        return sb.toString();
    }
}

class Solution4 {
    public int[] solution(int l, int r) {
        ArrayList&lt;Integer&gt; result = new ArrayList&lt;&gt;();
        for (int num = l; num &lt;= r; num++) {
            if (isZeroOrFive(num)) {
                result.add(num);
            }
        }
        if (result.isEmpty()) {
            return new int[]{-1};
        }
        int[] answer = new int[result.size()];
        for (int i = 0; i &lt; result.size(); i++) {
            answer[i] = result.get(i);
        }
        return answer;
    }

    private boolean isZeroOrFive(int num) {
        String str = String.valueOf(num);
        for (int i = 0; i &lt; str.length(); i++) {
            char c = str.charAt(i);
            if (c != &#39;0&#39; &amp;&amp; c != &#39;5&#39;) {
                return false;
            }
        }
        return true;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c734223a-4795-462b-ac40-c4b733d83157/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 수열과 구간 쿼리 4]]></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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-4</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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-4</guid>
            <pubDate>Mon, 18 May 2026 02:02:54 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/4a880440-567a-40e5-934e-ddfdbaf54e32/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 arr와 2차원 정수 배열 queries이 주어집니다.
queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 정수 배열 arr과 2차원 배열 queries를 입력받아, 쿼리 순서대로 주어진 조건을 적용한다.
각 쿼리 [s, e, k]에 대해서 인덱스 s부터 e까지 반복하며, 인덱스 i가 k의 배수인지 검사한다.
만약 k가 0이 아니고 인덱스가 k의 배수이면 해당 인덱스의 arr[i] 값을 1 증가시킨다.
모든 쿼리 처리가 끝나면 변형된 arr 배열을 반환한다.
main 메서드에서는 예제 입력을 생성하고 solution 메서드를 호출한다.
그 결과를 배열 형태로 받아와 Arrays.toString을 이용해 콘솔에 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];
            int k = query[2];
            for (int i = s; i &lt;= e; i++) {
                if (k != 0 &amp;&amp; i % k == 0) {
                    arr[i]++;
                }
            }
        }

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

import java.util.Arrays;

// 프로그래머스 수열과 구간 쿼리 4
public class Main23 {
    // 쿼리를 적용하여 arr 배열을 변경한 후 결과를 반환하는 메서드이다.
    public static int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];
            int k = query[2];
            for (int i = s; i &lt;= e; i++) {
                if (k != 0 &amp;&amp; i % k == 0) {
                    arr[i]++;
                }
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int[] arr = {0, 1, 2, 4, 3};
        int[][] queries = {
                {0, 4, 1},
                {0, 3, 2},
                {0, 3, 3}
        };

        // solution 메서드를 호출해 결과를 받아 온다.
        int[] result = solution(arr, queries);

        // 변경된 배열을 출력한다.
        System.out.println(Arrays.toString(result));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f3d4033d-023c-4ff5-b7b4-5565c3add6a3/image.PNG" alt=""></p>
<h3 id="마루리">마루리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 수열과 구간 쿼리 2]]></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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-2</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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-2</guid>
            <pubDate>Sun, 17 May 2026 07:21:55 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/26994b50-5337-4027-98e0-80b87306a036/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 arr와 2차원 정수 배열 queries이 주어집니다.
queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 쿼리 배열의 길이만큼 answer 배열을 만든다.
각 쿼리에 대해 s, e, k를 분리하여 [s, e] 범위 내의 arr 요소를 탐색한다.
k보다 큰 요소 중 가장 작은 값을 찾는데, 이를 위해 minVal을 Integer.MAX_VALUE로 초기화하고 조건문을 통해 값을 갱신한다.
조건을 만족하는 값이 없으면 found가 false인 상태로 남아 있으므로 -1을 answer에 저장한다.
모든 쿼리를 처리한 뒤 결과 배열을 반환한다.
main 메서드는 테스트용 데이터로 arr과 queries를 선언하고 solution을 호출한다.
결과 배열을 Arrays.toString(result)로 출력하여 [3, 4, -1]과 같이 배열 형태로 한 줄에 결과를 보여준다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];

        for (int q = 0; q &lt; queries.length; q++) {
            int s = queries[q][0];
            int e = queries[q][1];
            int k = queries[q][2];

            int minVal = Integer.MAX_VALUE;
            boolean found = false;

            for (int i = s; i &lt;= e; i++) {
                if (arr[i] &gt; k &amp;&amp; arr[i] &lt; minVal) {
                    minVal = arr[i];
                    found = true;
                }
            }

            answer[q] = found ? minVal : -1;
        }

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

import java.util.Arrays;

// 프로그래머스 수열과 구간 쿼리 2
public class Main22 {
    public static int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];

        for (int q = 0; q &lt; queries.length; q++) {
            int s = queries[q][0];
            int e = queries[q][1];
            int k = queries[q][2];

            int minVal = Integer.MAX_VALUE;
            boolean found = false;

            for (int i = s; i &lt;= e; i++) {
                if (arr[i] &gt; k &amp;&amp; arr[i] &lt; minVal) {
                    minVal = arr[i];
                    found = true;
                }
            }

            answer[q] = found ? minVal : -1;
        }

        return answer;
    }

    public static void main(String[] args) {
        int[] arr = {0, 1, 2, 4, 3};
        int[][] queries = {
                {0, 4, 2},
                {0, 3, 2},
                {0, 2, 2}
        };

        int[] result = solution(arr, queries);

        // 배열을 [3, 4, -1] 같은 형태로 출력
        System.out.println(Arrays.toString(result));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/5ced8312-72ab-472b-8f0f-199fdcef1ce2/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 수열과 구간 쿼리 3]]></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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-3</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%98%EC%97%B4%EA%B3%BC-%EA%B5%AC%EA%B0%84-%EC%BF%BC%EB%A6%AC-3</guid>
            <pubDate>Sat, 16 May 2026 07:31:59 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c531aaf2-6ee4-4786-a71a-e34c46fb6c77/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 arr와 2차원 정수 배열 queries이 주어집니다.
queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main21 클래스에서는 main 메서드가 프로그램의 시작점 역할을 한다.
이 메서드에서 문제 해결 로직이 담긴 Solution3 클래스의 solution 메서드를 호출한다.
입력으로 주어진 배열 arr와 쿼리 배열 queries를 전달하며, 쿼리에 따라 배열의 요소들이 교환된 최종 결과를 반환받는다.
그 결과를 Arrays.toString 메서드를 통해 [3, 4, 1, 0, 2] 형식의 문자열로 출력한다.
Solution3 클래스에는 실제 문제의 핵심 로직이 담긴 solution 메서드가 있다.
이 메서드는 쿼리 배열을 순회하면서 각 쿼리의 두 인덱스 위치에 해당하는 배열 요소들을 서로 맞바꾸는 작업을 수행한다.
모든 쿼리를 처리한 뒤 결과 배열을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int i = query[0];
            int j = query[1];
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr; 
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

import java.util.Arrays;

// 프로그래머스 수열과 구간 쿼리 3
public class Main21 {
    public static void main(String[] args) {
        Solution3 solution3 = new Solution3();
        int[] arr = {0, 1, 2, 3, 4};
        int[][] queries = {{0, 3}, {1, 2}, {1, 4}};

        int[] result = solution3.solution(arr, queries);

        System.out.println(Arrays.toString(result));
    }
}

class Solution3 {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int i = query[0];
            int j = query[1];
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/df81797d-830d-49f9-b8b3-f4a4d69b53aa/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 수 조작하기 2]]></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%98-%EC%A1%B0%EC%9E%91%ED%95%98%EA%B8%B0-2</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%98-%EC%A1%B0%EC%9E%91%ED%95%98%EA%B8%B0-2</guid>
            <pubDate>Fri, 15 May 2026 00:51:17 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/44d5cba3-934a-42a1-837b-cceaf4a1d2fb/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 배열 numLog가 주어집니다.
처음에 numLog[0]에서 부터 시작해 &quot;w&quot;, &quot;a&quot;, &quot;s&quot;, &quot;d&quot;로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
&quot;w&quot; : 수에 1을 더한다.
&quot;s&quot; : 수에 1을 뺀다.
&quot;d&quot; : 수에 10을 더한다.
&quot;a&quot; : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다.
즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.
주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>주어진 코드는 numLog 배열에서 인접한 두 값의 차이에 따라 문자 &quot;w&quot;, &quot;s&quot;, &quot;d&quot;, &quot;a&quot;를 찾아 문자열로 변환하는 문제를 해결한다.
초기 수 numLog[0]에서 시작해 각 조작 단계별 차이를 확인하고, 그에 맞는 조작 문자를 결과로 만든다.
주어진 코드는 다음과 같은 방식으로 동작한다.
for 반복문은 배열의 두 번째 요소부터 시작해 각 요소와 바로 전 요소의 차이를 구한다.
차이가 1이면 &quot;w&quot;, -1이면 &quot;s&quot;, 10이면 &quot;d&quot;, -10이면 &quot;a&quot;를 결과에 추가한다.
모든 차이 값을 검사한 후 완성된 문자열을 반환한다.
main 메서드에서는 예시 배열을 넣어 함수를 호출하고 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(int[] numLog) {
        StringBuilder answer = new StringBuilder();
        for(int i = 1; i &lt; numLog.length; i++) {
            int diff = numLog[i] - numLog[i - 1];
            if(diff == 1) {
                answer.append(&quot;w&quot;);
            } else if(diff == -1) {
                answer.append(&quot;s&quot;);
            } else if(diff == 10) {
                answer.append(&quot;d&quot;);
            } else if(diff == -10) {
                answer.append(&quot;a&quot;);
            }
        }

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

// 프로그래머스 수 조작하기 2
public class Main20 {
    public static String solution(int[] numLog) {
        StringBuilder answer = new StringBuilder();
        for (int i = 1; i &lt; numLog.length; i++) {
            int diff = numLog[i] - numLog[i - 1];
            if (diff == 1) {
                answer.append(&quot;w&quot;);
            } else if (diff == -1) {
                answer.append(&quot;s&quot;);
            } else if (diff == 10) {
                answer.append(&quot;d&quot;);
            } else if (diff == -10) {
                answer.append(&quot;a&quot;);
            }
        }
        return answer.toString();
    }

    public static void main(String[] args) {
        // 테스트용 예시
        int[] numLog = {0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1};
        String result = solution(numLog);
        System.out.println(result);  // 예상 출력: &quot;wsdawsdassw&quot;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d86a361f-539a-444f-af6d-42d17da02ee4/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%88%98-%EC%A1%B0%EC%9E%91%ED%95%98%EA%B8%B0-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%88%98-%EC%A1%B0%EC%9E%91%ED%95%98%EA%B8%B0-1</guid>
            <pubDate>Thu, 14 May 2026 01:06:36 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a32162c7-f349-4d8c-b197-bb42f6d34374/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 n과 문자열 control이 주어집니다. control은 &quot;w&quot;, &quot;a&quot;, &quot;s&quot;, &quot;d&quot;의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
&quot;w&quot; : n이 1 커집니다.
&quot;s&quot; : n이 1 작아집니다.
&quot;d&quot; : n이 10 커집니다.
&quot;a&quot; : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
따라서 -1을 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 입력받은 정수 n과 문자열 control을 인자로 받는다.
문자열 control의 각 문자를 하나씩 검사하며 해당 문자가 의미하는 대로 n의 값을 변경한다.
문자 &#39;w&#39;일 때는 n을 1 증가시키고, &#39;s&#39;일 때는 1 감소시킨다.
&#39;d&#39;면 10을 더하고, &#39;a&#39;면 10을 뺀다.
모든 문자를 처리한 뒤 최종적으로 변동된 값을 반환한다.
main 메서드에서는 예시 입력인 0과 &quot;wsdawsdassw&quot;를 사용해 solution 메서드를 호출하고 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int n, String control) {
        for(int i = 0; i &lt; control.length(); i++) {
            char c = control.charAt(i);
            if(c == &#39;w&#39;) {
                n += 1;
            } else if(c == &#39;s&#39;) {
                n -= 1;
            } else if(c == &#39;d&#39;) {
                n += 10;
            } else if(c == &#39;a&#39;) {
                n -= 10;
            }
        }

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

// 프로그래머스 수 조작하기 1
public class Main19 {
    public static void main(String[] args) {
        int n = 0;
        String control = &quot;wsdawsdassw&quot;;
        int result = solution(n, control);
        System.out.println(result);
    }

    public static int solution(int n, String control) {
        for (int i = 0; i &lt; control.length(); i++) {
            char c = control.charAt(i);
            if (c == &#39;w&#39;) {
                n += 1;
            } else if (c == &#39;s&#39;) {
                n -= 1;
            } else if (c == &#39;d&#39;) {
                n += 10;
            } else if (c == &#39;a&#39;) {
                n -= 10;
            }
        }

        return n;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/950af44e-33f9-44ef-a400-a5bd6b78bb5c/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%A7%88%EC%A7%80%EB%A7%89-%EB%91%90-%EC%9B%90%EC%86%8C</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%A7%88%EC%A7%80%EB%A7%89-%EB%91%90-%EC%9B%90%EC%86%8C</guid>
            <pubDate>Tue, 12 May 2026 22:57:41 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/7697f226-4571-4505-aef5-8de0be20da47/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 문제 조건에 따라 배열의 마지막 두 원소를 비교한다.
마지막 원소가 이전 원소보다 크면 두 원소의 차이를 계산하고, 그렇지 않으면 마지막 원소의 두 배를 구한다.
기존 배열보다 크기가 하나 큰 새 배열을 만들고 원래 배열을 복사한다.
새 배열 마지막에 계산한 값을 추가한다.
main 메서드는 두 가지 테스트 케이스를 실행하며, 결과를 출력한다.
Arrays.toString 메서드를 이용해 배열을 문자열로 변환하여 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] num_list) {
        int n = num_list.length;
        int last = num_list[n - 1];
        int prev = num_list[n - 2];
        int addValue;

        if (last &gt; prev) {
            addValue = last - prev;
        } else {
            addValue = last * 2;
        }

        int[] answer = new int[n + 1];
        for (int i = 0; i &lt; n; i++) {
            answer[i] = num_list[i];
        }

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

import java.util.Arrays;

// 프로그래머스 마지막 두 원소
public class Main18 {
    public static int[] solution(int[] num_list) {
        int n = num_list.length;
        int last = num_list[n - 1];
        int prev = num_list[n - 2];
        int addValue;

        if (last &gt; prev) {
            addValue = last - prev;
        } else {
            addValue = last * 2;
        }

        int[] answer = new int[n + 1];
        for (int i = 0; i &lt; n; i++) {
            answer[i] = num_list[i];
        }

        answer[n] = addValue;
        return answer;
    }

    public static void main(String[] args) {
        // 테스트 케이스 1
        int[] test1 = {2, 1, 6};
        System.out.println(&quot;Test 1 결과: &quot; + Arrays.toString(solution(test1)));

        // 테스트 케이스 2
        int[] test2 = {5, 2, 1, 7, 5};
        System.out.println(&quot;Test 2 결과: &quot; + Arrays.toString(solution(test2)));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/24792053-0db6-4d26-bda6-ae4b402c8aee/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%9D%B4%EC%96%B4-%EB%B6%99%EC%9D%B8-%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-%EC%9D%B4%EC%96%B4-%EB%B6%99%EC%9D%B8-%EC%88%98</guid>
            <pubDate>Tue, 12 May 2026 00:41:59 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c178a2da-ee53-4378-9aa8-2fa1ee43376c/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수가 담긴 리스트 num_list가 주어집니다.
num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>주어진 코드는 정수 배열에서 홀수와 짝수를 분리하여 각기 이어 붙이고, 이어 붙인 두 수를 더한 값을 반환한다.
먼저, solution 메서드는 입력으로 받은 정수 배열을 순회한다.
각각의 숫자가 홀수인지 짝수인지를 판단하여, 홀수면 oddStr에, 짝수면 evenStr에 문자열 형태로 붙인다.
순회가 끝나면 홀수와 짝수로 이어 붙인 문자열을 Integer.parseInt()를 사용해 정수로 변환한다.
마지막으로 두 정수를 더하여 결과를 반환한다.
main 메서드는 Main17 클래스를 인스턴스화하여, 두 개의 예제 배열을 solution 메서드에 전달하고 반환된 결과를 출력한다.
출력된 값은 문제 조건에 맞게 홀수·짝수 이어 붙인 수들의 합과 일치한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int[] num_list) {
        StringBuilder oddStr = new StringBuilder();
        StringBuilder evenStr = new StringBuilder();

        for (int num : num_list) {
            if (num % 2 == 1) {
                oddStr.append(num);
            } else {
                evenStr.append(num);
            }
        }

        int oddNum = Integer.parseInt(oddStr.toString());
        int evenNum = Integer.parseInt(evenStr.toString());

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

// 프로그래머스 이어 붙인 수
public class Main17 {
    public int solution(int[] num_list) {
        StringBuilder oddStr = new StringBuilder();
        StringBuilder evenStr = new StringBuilder();

        for (int num : num_list) {
            if (num % 2 == 1) {
                oddStr.append(num);
            } else {
                evenStr.append(num);
            }
        }

        int oddNum = Integer.parseInt(oddStr.toString());
        int evenNum = Integer.parseInt(evenStr.toString());

        return oddNum + evenNum;
    }

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

        int[] example1 = {3, 4, 5, 2, 1};
        int[] example2 = {5, 7, 8, 3};

        System.out.println(sol.solution(example1));  // 393 출력
        System.out.println(sol.solution(example2));  // 581 출력
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/7f969c47-4e1d-47a3-93a0-9af4ad463034/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%9B%90%EC%86%8C%EB%93%A4%EC%9D%98-%EA%B3%B1%EA%B3%BC-%ED%95%A9</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%9B%90%EC%86%8C%EB%93%A4%EC%9D%98-%EA%B3%B1%EA%B3%BC-%ED%95%A9</guid>
            <pubDate>Mon, 11 May 2026 03:23:01 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ccf11df5-527f-4b55-9f0f-b1f9323b3486/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main16 클래스 내부에 solution 메서드를 static으로 선언해 main 메서드에서 직접 호출 가능하게 했다.
solution 메서드는 입력받은 정수 배열을 반복하면서 원소들의 곱(product)과 합(sum)을 차례로 계산한다.
곱한 값과 합의 제곱을 비교하여 조건에 따라 1 또는 0을 반환한다.
main 메서드는 두 가지 예시를 배열로 선언하고, 각각 solution 메서드를 호출하여 결과를 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int[] num_list) {
        int product = 1; 
        int sum = 0;

        for (int num : num_list) {
            product *= num;
            sum += num;
        }

        if (product &lt; sum * sum) {
            return 1;
        } else {
            return 0;
        }
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 원소들의 곱과 합
public class Main16 {
    // 모든 원소의 곱과 합의 제곱을 비교하는 메서드
    public static int solution(int[] num_list) {
        int product = 1; // 곱을 1로 초기화
        int sum = 0;     // 합을 0으로 초기화

        // 배열 순회하며 곱과 합 계산
        for (int num : num_list) {
            product *= num;
            sum += num;
        }

        // 곱이 합의 제곱보다 작으면 1, 아니면 0 반환
        if (product &lt; sum * sum) {
            return 1;
        } else {
            return 0;
        }
    }

    // main 메서드에서 테스트 실행
    public static void main(String[] args) {
        int[] example1 = {3, 4, 5, 2, 1};
        int[] example2 = {5, 7, 8, 3};

        System.out.println(solution(example1)); // 1 출력 예상
        System.out.println(solution(example2)); // 0 출력 예상
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/cfc43b00-0f12-4771-9a31-d5deb420c311/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 주사위 게임 2]]></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%A3%BC%EC%82%AC%EC%9C%84-%EA%B2%8C%EC%9E%84-2</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%A3%BC%EC%82%AC%EC%9C%84-%EA%B2%8C%EC%9E%84-2</guid>
            <pubDate>Sun, 10 May 2026 04:10:53 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f4918f44-31ea-47c4-b628-0ef29260bae0/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 세 주사위 눈금 a, b, c를 입력으로 받는다.
먼저 세 숫자의 합을 sum에 저장한다. 그리고 각 숫자의 제곱의 합을 sumSquared에 저장한다.
첫 번째 조건문은 세 숫자가 모두 같은지 확인한다.
모두 같으면 세 숫자의 세제곱 합을 구해 sumCubed에 저장하며, 점수는 sum × sumSquared × sumCubed로 계산해 반환한다.
두 번째 조건문은 세 숫자 중 두 개가 같고 나머지 하나가 다른 경우로 반응한다.
이때 점수는 sum × sumSquared로 계산해 반환한다.
마지막으로 세 숫자가 모두 다를 경우에는 단순히 세 숫자의 합인 sum을 반환하도록 한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(int a, int b, int c) {
        int sum = a + b + c;
        int sumSquared = a * a + b * b + c * c;

        if (a == b &amp;&amp; b == c) {
            int sumCubed = a * a * a + b * b * b + c * c * c;
            return sum * sumSquared * sumCubed;
        } else if (a == b || b == c || a == c) {
            return sum * sumSquared;
        } else {
            return sum;
        }
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 주사위 게임 2
public class Main15 {
    public static int solution(int a, int b, int c) {
        int sum = a + b + c;
        int sumSquared = a * a + b * b + c * c;

        if (a == b &amp;&amp; b == c) {
            int sumCubed = a * a * a + b * b * b + c * c * c;
            return sum * sumSquared * sumCubed;
        } else if (a == b || b == c || a == c) {
            return sum * sumSquared;
        } else {
            return sum;
        }
    }

    public static void main(String[] args) {
        // 예제 테스트: 2, 6, 1 =&gt; 결과 9
        System.out.println(solution(2, 6, 1));
        // 예제 테스트: 5, 3, 3 =&gt; 결과 473
        System.out.println(solution(5, 3, 3));
        // 예제 테스트: 4, 4, 4 =&gt; 결과 110592
        System.out.println(solution(4, 4, 4));
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8e82a87c-83be-4648-a2fe-4ab7afbcb79d/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
    </channel>
</rss>