<?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, 20 Jul 2026 15:49:20 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[프로그래머스 무작위로 K개의 수 뽑기]]></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%B4%EC%9E%91%EC%9C%84%EB%A1%9C-K%EA%B0%9C%EC%9D%98-%EC%88%98-%EB%BD%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%B4%EC%9E%91%EC%9C%84%EB%A1%9C-K%EA%B0%9C%EC%9D%98-%EC%88%98-%EB%BD%91%EA%B8%B0</guid>
            <pubDate>Mon, 20 Jul 2026 15:49:20 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/18ce55fc-a726-479b-9c8b-fb439174d9a5/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>랜덤으로 서로 다른 k개의 수를 저장한 배열을 만드려고 합니다.
적절한 방법이 떠오르지 않기 때문에 일정한 범위 내에서 무작위로 수를 뽑은 후, 지금까지 나온적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만들기로 합니다.
이미 어떤 수가 무작위로 주어질지 알고 있다고 가정하고, 실제 만들어질 길이 k의 배열을 예상해봅시다.
정수 배열 arr가 주어집니다. 문제에서의 무작위의 수는 arr에 저장된 순서대로 주어질 예정이라고 했을 때, 완성될 배열을 return 하는 solution 함수를 완성해 주세요.
단, 완성될 배열의 길이가 k보다 작으면 나머지 값을 전부 -1로 채워서 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>먼저 길이가 k인 정수 배열 answer를 생성한다.
중복을 빠르게 확인하기 위해 HashSet인 seen을 만든다.
배열 arr을 순회하면서 각 숫자를 꺼낸다.
만약 그 숫자가 seen에 없다면, 즉 처음 나오는 숫자라면:
seen에 추가하고,
answer 배열의 다음 인덱스에 넣은 후 인덱스 idx를 증가시킨다.
idx가 k에 도달하면 더 이상 중복 없이 뽑을 수 없으니 반복을 중단한다.
배열 순회가 끝났을 때 answer가 k보다 부족하면 남은 부분을 -1로 채운다.
마지막으로 완성된 answer 배열을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        int[] answer = new int[k];
        Set&lt;Integer&gt; seen = new HashSet&lt;&gt;();
        int idx = 0;

        for (int num : arr) {
            if (!seen.contains(num)) {
                seen.add(num);
                answer[idx++] = num;
                if (idx == k) 
                    break; 
            }
        }

        for (; idx &lt; k; idx++) {
            answer[idx] = -1;
        }

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

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

// 프로그래머스 무작위로 K개의 수 뽑기
public class Main87 {
    public static int[] solution(int[] arr, int k) {
        int[] answer = new int[k];
        Set&lt;Integer&gt; seen = new HashSet&lt;&gt;();
        int idx = 0;

        for (int num : arr) {
            if (!seen.contains(num)) {
                seen.add(num);
                answer[idx++] = num;
                if (idx == k)
                    break;
            }
        }

        for (; idx &lt; k; idx++) {
            answer[idx] = -1;
        }

        return answer;
    }

    public static void main(String[] args) {
        int[] arr1 = {0, 1, 1, 2, 2, 3};
        int k1 = 3;
        System.out.println(Arrays.toString(solution(arr1, k1))); // [0, 1, 2]

        int[] arr2 = {0, 1, 1, 1, 1};
        int k2 = 4;
        System.out.println(Arrays.toString(solution(arr2, k2))); // [0, 1, -1, -1]
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/2416a1c6-bfda-414a-8638-36c86a48fa76/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 배열 만들기 6]]></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-6</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-6</guid>
            <pubDate>Sun, 19 Jul 2026 17:52:26 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d779552e-2147-4cd3-918c-43eac4ab2ce7/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다.
i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다.
만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다.
stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다.
위 작업을 마친 후 만들어진 stk을 return 하는 solution 함수를 완성해 주세요.
단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Stack&lt;Integer&gt; stk = new Stack&lt;&gt;();를 통해 스택을 생성한다. 이 스택은 새 배열을 만드는 임시 저장소 역할을 한다.
변수 i를 0으로 초기화하여 입력 배열 arr를 순차적으로 탐색한다.
while(i &lt; arr.length) 반복문은 배열의 모든 원소를 처리할 때까지 반복한다.
만약 스택이 비어있다면 stk.push(arr[i])를 수행해 현재 원소를 추가하고, i를 1 증가시킨다.
스택이 비어있지 않다면 스택의 최상단 원소(stk.peek())와 현재 원소 arr[i]를 비교한다.
같으면 stk.pop()으로 최상단 원소를 제거하고 i를 증가시켜 다음 원소로 이동한다.
다르면 현재 원소를 스택에 추가하고 i를 증가시킨다.
모든 원소를 처리한 후 스택이 비어있으면 조건에 따라 -1을 담은 배열을 반환한다.
스택에 원소가 남아 있으면 이를 배열로 변환하는데, 스택에서 팝을 하면 역순으로 나오므로 뒤에서부터 채워 넣어 원래 순서를 유지한다.
main 메서드에서는 세 가지 테스트 케이스를 직접 실행하고 결과를 출력하여 동작을 검증한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.*;

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

        while (i &lt; arr.length) {
            if (stk.isEmpty()) {
                stk.push(arr[i]);
                i++;
            } else {
                if (stk.peek() == arr[i]) {
                    stk.pop();
                    i++;
                } else {
                    stk.push(arr[i]);
                    i++;
                }
            }
        }

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

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

import java.util.Arrays;
import java.util.Stack;

// 프로그래머스 배열 만들기 6
public class Main86 {
    public static int[] solution(int[] arr) {
        Stack&lt;Integer&gt; stk = new Stack&lt;&gt;();
        int i = 0;

        while (i &lt; arr.length) {
            if (stk.isEmpty()) {
                stk.push(arr[i]);
                i++;
            } else {
                if (stk.peek() == arr[i]) {
                    stk.pop();
                    i++;
                } else {
                    stk.push(arr[i]);
                    i++;
                }
            }
        }

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

        int[] answer = new int[stk.size()];
        for (int j = stk.size() - 1; j &gt;= 0; j--) {
            answer[j] = stk.pop();
        }
        return answer;
    }

    public static void main(String[] args) {
        int[] test1 = {0, 1, 1, 1, 0};
        int[] result1 = solution(test1);
        System.out.println(Arrays.toString(result1)); // [0, 1, 0]

        int[] test2 = {0, 1, 0, 1, 0};
        int[] result2 = solution(test2);
        System.out.println(Arrays.toString(result2)); // [0, 1, 0, 1, 0]

        int[] test3 = {0, 1, 1, 0};
        int[] result3 = solution(test3);
        System.out.println(Arrays.toString(result3)); // [-1]
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/8f5a7f33-4a80-405b-b73f-c67f2ab5bcac/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%B9%88-%EB%B0%B0%EC%97%B4%EC%97%90-%EC%B6%94%EA%B0%80-%EC%82%AD%EC%A0%9C%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%B9%88-%EB%B0%B0%EC%97%B4%EC%97%90-%EC%B6%94%EA%B0%80-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 18 Jul 2026 16:55:52 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c74a0a73-f0a9-4c33-910d-8cd7ce13a180/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>아무 원소도 들어있지 않은 빈 배열 X가 있습니다.
길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>빈 배열 X 역할을 하는 ArrayList X를 새로 만든다.
ArrayList는 원소 추가와 삭제에 편리하다.
arr와 flag의 길이가 같으므로 for문에서 i를 0부터 arr.length - 1까지 순회한다.
flag[i]가 true이면 arr[i] 값을 arr[i] * 2번 X에 추가한다.
즉, arr[i] 값을 두 배만큼 반복해 추가하는 처리를 한다.
flag[i]가 false이면 현재 X 크기를 size에 저장한다.
그리고 X의 뒤쪽에서부터 arr[i] 만큼 원소를 제거한다.
이 때 remove 메서드를 사용할 때 인덱스가 0부터 감소하는 것이 아니라 size - 1부터 차례로 뒤에서 앞으로 접근하기 때문에 size - 1 - j를 인덱스로 빼야 한다.
모든 반복이 끝나면 X의 원소를 담는 size 크기의 정수 배열 answer를 생성한 뒤, X의 각 원소를 순서대로 answer 배열에 복사한다.
완성된 answer 배열을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        ArrayList&lt;Integer&gt; X = new ArrayList&lt;&gt;();

        for(int i = 0; i &lt; arr.length; i++) {
            if(flag[i]) {
                for(int j = 0; j &lt; arr[i] * 2; j++) {
                    X.add(arr[i]);
                }
            } else {
                int size = X.size();
                for(int j = 0; j &lt; arr[i]; j++) {
                    X.remove(size - 1 - j);
                }
            }
        }

        int[] answer = new int[X.size()];
        for(int i = 0; i &lt; X.size(); i++) {
            answer[i] = X.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 Main85 {
    public static void main(String[] args) {
        int[] arr = {3, 2, 4, 1, 3};
        boolean[] flag = {true, false, true, false, false};
        int[] result = solution(arr, flag);
        System.out.println(Arrays.toString(result)); // [3, 3, 3, 3, 4, 4, 4, 4]
    }

    public static int[] solution(int[] arr, boolean[] flag) {
        ArrayList&lt;Integer&gt; X = new ArrayList&lt;&gt;();

        for (int i = 0; i &lt; arr.length; i++) {
            if (flag[i]) {
                for (int j = 0; j &lt; arr[i] * 2; j++) {
                    X.add(arr[i]);
                }
            } else {
                int size = X.size();
                for (int j = 0; j &lt; arr[i]; j++) {
                    X.remove(size - 1 - j);
                }
            }
        }

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

        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ed1ab2a9-bbed-4855-afdc-f4a1bdce3dd3/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%9B%90%EC%86%8C%EB%A7%8C%ED%81%BC-%EC%B6%94%EA%B0%80%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%B0%B0%EC%97%B4%EC%9D%98-%EC%9B%90%EC%86%8C%EB%A7%8C%ED%81%BC-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 17 Jul 2026 15:19:12 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ed720449-2e93-43aa-a0f9-d240ff59cf86/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>아무 원소도 들어있지 않은 빈 배열 X가 있습니다.
양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main84 클래스 내에서 프로그래머스 스타일의 solution 메서드를 static으로 정의했다.
입력 배열 arr의 각 원소를 순회하며 처리하는 핵심 메서드다.
solution 메서드는 내부에서 가변적 크기를 관리하기 위해 ArrayList&lt;Integer&gt; list를 사용한다.
배열은 고정 크기라서 동적으로 확장 가능한 리스트를 활용한다.
for (int a : arr) 구문으로 입력 배열 arr의 각 원소를 하나씩 가져온다.
숫자 a를 기준으로 다음 중첩 반복문을 실행한다.
for (int i = 0; i &lt; a; i++) 내에서 숫자 a를 a번 list에 추가한다.
예를 들어 5면 5번, 1이면 1번 추가하는 방식이다.
반복문 종료 후, 리스트에 담긴 모든 정수를 크기가 동일한 기본 배열 int[]로 변환하여 반환한다.
리스트 크기에 맞게 배열 생성 후 인덱스를 활용해 요소들을 복사한다.
main 메서드에서 테스트 케이스 배열 testCases를 선언했다.
각 테스트 배열에 대해 solution 결과를 받아 printArray 메서드로 보기 좋게 출력한다.
printArray 메서드는 배열을 [5, 5, 5, ...] 형태의 문자열로 콘솔 출력하는 유틸리티 함수다.
쉼표와 공백으로 구분하여 배열 원소들을 한 줄에 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr) {
        ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;();
        for (int a : arr) {
            for (int i = 0; i &lt; a; i++) {
                list.add(a);
            }
        }
        int[] answer = new int[list.size()];
        for (int i = 0; i &lt; list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

import java.util.ArrayList;

// 프로그래머스 배열의 원소만큼 추가하기
public class Main84 {
    public static void main(String[] args) {
        int[][] testCases = {
                {5, 1, 4},
                {6, 6},
                {1}
        };

        for (int i = 0; i &lt; testCases.length; i++) {
            int[] result = solution(testCases[i]);
            printArray(result);
        }
    }

    public static int[] solution(int[] arr) {
        ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;();
        for (int a : arr) {
            for (int i = 0; i &lt; a; i++) {
                list.add(a);
            }
        }
        int[] answer = new int[list.size()];
        for (int i = 0; i &lt; list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }

    private static void printArray(int[] arr) {
        System.out.print(&quot;[&quot;);
        for (int i = 0; i &lt; arr.length; i++) {
            System.out.print(arr[i]);
            if (i != arr.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/6bb2e903-d524-4e51-8851-fb42e513aedd/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%B0%9C%EC%9D%98-%EA%B5%AC%EB%B6%84%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-%EC%84%B8-%EA%B0%9C%EC%9D%98-%EA%B5%AC%EB%B6%84%EC%9E%90</guid>
            <pubDate>Thu, 16 Jul 2026 15:06:32 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c35fec53-e50b-4d21-afb1-827822459d2f/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>임의의 문자열이 주어졌을 때 문자 &quot;a&quot;, &quot;b&quot;, &quot;c&quot;를 구분자로 사용해 문자열을 나누고자 합니다.
예를 들어 주어진 문자열이 &quot;baconlettucetomato&quot;라면 나눠진 문자열 목록은 [&quot;onlettu&quot;, &quot;etom&quot;, &quot;to&quot;] 가 됩니다.
문자열 myStr이 주어졌을 때 위 예시와 같이 &quot;a&quot;, &quot;b&quot;, &quot;c&quot;를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 [&quot;EMPTY&quot;]를 return 합니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>myStr.split(&quot;[abc]&quot;) 메서드를 사용하여 문자열을 &quot;a&quot;, &quot;b&quot;, &quot;c&quot;라는 문자들을 기준으로 나눈다.
이때 구분자 문자는 배열에서 제거되고, 그 사이에 있는 문자들만 배열 요소로 분리된다.
나뉘어진 부분 문자열 배열에서 빈 문자열(즉, 연속된 구분자 사이에 문자 없는 경우)을 걸러내기 위해, 반복문으로 각 요소를 순회하며 빈 문자열이 아닌 경우에만 리스트에 추가한다.
이렇게 하면 두 구분자 사이에 문자가 없을 때 빈 문자열이 결과에 포함되지 않는다.
리스트가 비어 있으면, 즉 &quot;a&quot;, &quot;b&quot;, &quot;c&quot; 이외의 문자가 전혀 없어서 저장할 substring이 하나도 없으면 [&quot;EMPTY&quot;]라는 배열을 반환한다.
그렇지 않으면, 리스트를 배열로 변환하여 최종 결과로 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.*;

class Solution {
    public String[] solution(String myStr) {
        String[] parts = myStr.split(&quot;[abc]&quot;);

        List&lt;String&gt; result = new ArrayList&lt;&gt;();
        for (String part : parts) {
            if (!part.isEmpty()) {
                result.add(part);
            }
        }

        if (result.isEmpty()) {
            return new String[]{&quot;EMPTY&quot;};
        }

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

import java.util.*;

// 프로그래머스 세 개의 구분자
public class Main83 {
    public static void main(String[] args) {
        Solution12 sol = new Solution12();
        // 테스트 예시
        String[] result = sol.solution(&quot;baconlettucetomato&quot;);
        System.out.println(Arrays.toString(result));  // [onlettu, etom, to]

        result = sol.solution(&quot;abcd&quot;);
        System.out.println(Arrays.toString(result));  // [d]

        result = sol.solution(&quot;cabab&quot;);
        System.out.println(Arrays.toString(result));  // [EMPTY]
    }
}

class Solution12 {
    public String[] solution(String myStr) {
        // &quot;a&quot;, &quot;b&quot;, &quot;c&quot;를 기준으로 문자열 분리
        String[] parts = myStr.split(&quot;[abc]&quot;);

        // 빈 문자열은 제외
        List&lt;String&gt; result = new ArrayList&lt;&gt;();
        for (String part : parts) {
            if (!part.isEmpty()) {
                result.add(part);
            }
        }

        // 결과가 없으면 [&quot;EMPTY&quot;] 리턴
        if (result.isEmpty()) {
            return new String[]{&quot;EMPTY&quot;};
        }

        return result.toArray(new String[0]);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ac8a6116-0ede-48b9-b226-81a371c025aa/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 rny_string]]></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-rnystring</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-rnystring</guid>
            <pubDate>Wed, 15 Jul 2026 15:15:29 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/df2636d8-5b3b-444b-b490-6f39250f0287/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>&#39;m&#39;과 &quot;rn&quot;이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다.
문자열 rny_string이 주어질 때, rny_string의 모든 &#39;m&#39;을 &quot;rn&quot;으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 입력받은 문자열 rny_string에서 replace 메서드를 이용해 &#39;m&#39;을 &quot;rn&quot;으로 변환한 문자열을 반환한다.
replace는 문자열 내의 모든 일치하는 문자나 문자열을 찾아 대체하여 새 문자열을 생성하므로, 반복문이나 별도의 로직 없이 간결하게 문제를 해결할 수 있다.
main 메서드에서는 네 가지 테스트 케이스를 정의해 각각의 결과를 System.out.println으로 출력했다.
test1인 &quot;masterpiece&quot;에서 &#39;m&#39;이 첫 글자에 있어 &quot;rnasterpiece&quot;로 변환된다.
test2인 &quot;programmers&quot;는 &#39;m&#39;이 두 번 등장하여 각각 &quot;rn&quot;으로 바뀌어 &quot;prograrnrners&quot;가 된다.
test3와 test4에는 &#39;m&#39;이 없으므로 원래 문자열을 그대로 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String rny_string) {
        return rny_string.replace(&quot;m&quot;, &quot;rn&quot;);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 rny_string
public class Main82 {
    public static String solution(String rny_string) {
        return rny_string.replace(&quot;m&quot;, &quot;rn&quot;);
    }

    public static void main(String[] args) {
        // 테스트용 예시
        String test1 = &quot;masterpiece&quot;;
        String test2 = &quot;programmers&quot;;
        String test3 = &quot;jerry&quot;;
        String test4 = &quot;burn&quot;;

        System.out.println(solution(test1)); // rnasterpiece
        System.out.println(solution(test2)); // prograrnrners
        System.out.println(solution(test3)); // jerry (변경 없음)
        System.out.println(solution(test4)); // burn (변경 없음)
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/b1c1545c-b516-427f-be08-d108717097b9/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%94%EA%BF%94%EC%84%9C-%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-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%94%EA%BF%94%EC%84%9C-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Tue, 14 Jul 2026 15:31:52 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/19cf37a8-b809-4315-bf00-93a1a9bdc47f/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자 &quot;A&quot;와 &quot;B&quot;로 이루어진 문자열 myString과 pat가 주어집니다.
myString의 &quot;A&quot;를 &quot;B&quot;로, &quot;B&quot;를 &quot;A&quot;로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>입력으로 받은 myString의 각 문자를 순차적으로 탐색한다.
탐색 중 문자가 &#39;A&#39;라면 &#39;B&#39;로, &#39;B&#39;라면 &#39;A&#39;로 교체하여 swapped라는 StringBuilder에 추가한다.
문자열 변환이 완료된 후, 완성된 문자열 swapped.toString()에서 pat라는 문자열이 포함되어 있는지 contains 메서드를 사용하여 확인한다.
포함되어 있을 경우 1을, 그렇지 않으면 0을 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String myString, String pat) {
        StringBuilder swapped = new StringBuilder();

        for (int i = 0; i &lt; myString.length(); i++) {
            char c = myString.charAt(i);
            if (c == &#39;A&#39;) {
                swapped.append(&#39;B&#39;);
            } else {
                swapped.append(&#39;A&#39;);
            }
        }

        if (swapped.toString().contains(pat)) {
            return 1;
        } else {
            return 0;
        }
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 문자열 바꿔서 찾기
public class Main81 {
    public int solution(String myString, String pat) {
        StringBuilder swapped = new StringBuilder();

        for (int i = 0; i &lt; myString.length(); i++) {
            char c = myString.charAt(i);
            if (c == &#39;A&#39;) {
                swapped.append(&#39;B&#39;);
            } else {
                swapped.append(&#39;A&#39;);
            }
        }

        if (swapped.toString().contains(pat)) {
            return 1;
        } else {
            return 0;
        }
    }

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

        // 테스트 케이스 예시
        String myString1 = &quot;ABBAA&quot;;
        String pat1 = &quot;AABB&quot;;
        System.out.println(sol.solution(myString1, pat1)); // 1 출력 예상

        String myString2 = &quot;ABAB&quot;;
        String pat2 = &quot;ABAB&quot;;
        System.out.println(sol.solution(myString2, pat2)); // 0 출력 예상
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/93f0e237-391b-43d6-a8ce-f2a9fa71a749/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-%EC%8B%9D-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0-sif5fwb5</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-%EC%8B%9D-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0-sif5fwb5</guid>
            <pubDate>Mon, 13 Jul 2026 15:14:15 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/878675db-278e-41ca-a6ce-29082277ca4d/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 binomial이 매개변수로 주어집니다.
binomial은 &quot;a op b&quot; 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 &#39;+&#39;, &#39;-&#39;, &#39;*&#39; 중 하나입니다.
주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 문자열 binomial을 입력받아 먼저 공백 &quot; &quot;을 기준으로 나누어 세 부분으로 분리한다.
이 세 부분은 연산할 두 수 a, b와 연산자 op이다.
문자열로 나누어진 a와 b를 Integer.parseInt를 이용해 정수로 변환한다.
연산자 op는 문자열로 비교하며, &quot;+&quot;일 경우 두 수의 합, &quot;-&quot;일 경우 차, &quot;*&quot;일 경우 곱을 계산한다.
해당 연산 결과를 answer 변수에 저장한 후 반환한다.
main 메서드는 프로그램 실행 시 테스트 역할을 한다.
Main80 클래스 객체를 생성하고, solution 메서드를 호출하여 계산 결과를 표준 출력한다.
테스트 입력은 &quot;43 + 12&quot;, &quot;0 - 7777&quot;, &quot;40000 * 40000&quot;이며, 각각 기대 결과인 55, -7777, 1600000000을 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String binomial) {
        String[] parts = binomial.split(&quot; &quot;);
        int a = Integer.parseInt(parts[0]);
        String op = parts[1];
        int b = Integer.parseInt(parts[2]);

        int answer = 0;
        if (op.equals(&quot;+&quot;)) {
            answer = a + b;
        } else if (op.equals(&quot;-&quot;)) {
            answer = a - b;
        } else if (op.equals(&quot;*&quot;)) {
            answer = a * b;
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 간단한 식 계산하기
public class Main80 {
    public int solution(String binomial) {
        String[] parts = binomial.split(&quot; &quot;);
        int a = Integer.parseInt(parts[0]);
        String op = parts[1];
        int b = Integer.parseInt(parts[2]);

        int answer = 0;
        if (op.equals(&quot;+&quot;)) {
            answer = a + b;
        } else if (op.equals(&quot;-&quot;)) {
            answer = a - b;
        } else if (op.equals(&quot;*&quot;)) {
            answer = a * b;
        }
        return answer;
    }

    public static void main(String[] args) {
        Main80 solver = new Main80();

        System.out.println(solver.solution(&quot;43 + 12&quot;));       // 55
        System.out.println(solver.solution(&quot;0 - 7777&quot;));       // -7777
        System.out.println(solver.solution(&quot;40000 * 40000&quot;));  // 1600000000
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/2f5c7d01-e808-4020-a281-de48ed574154/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%9E%98%EB%9D%BC%EC%84%9C-%EC%A0%95%EB%A0%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-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9E%98%EB%9D%BC%EC%84%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 12 Jul 2026 15:27:27 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/ee44a264-751b-48c7-ab4c-3c3ca21bee69/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 myString이 주어집니다.
&quot;x&quot;를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>myString.split(&quot;x&quot;) 구문을 이용해 입력된 문자열을 문자 &quot;x&quot;를 기준으로 자른다.
이때 &quot;x&quot;가 연속되거나 문자열 시작/끝에 있을 경우 빈 문자열이 생긴다.
Arrays.stream(parts).filter(s -&gt; !s.isEmpty()) 부분에서 분할된 배열 중 빈 문자열(&quot;&quot;)인 요소는 제거한다.
이는 &quot;x&quot;가 연속되거나 문자열의 앞뒤에 있을 때 불필요한 빈 항목을 배제하기 위함이다.
.sorted()는 스트림의 요소들을 사전순(알파벳 순서)으로 정렬시킨다.
따라서 &quot;axbxcxdx&quot;는 잘라낸 [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;]가 이미 정렬된 상태이며, &quot;dxccxbbbxaaaa&quot;의 경우에도 분리된 배열 [&quot;d&quot;,&quot;cc&quot;,&quot;bbb&quot;,&quot;aaaa&quot;]가 [&quot;aaaa&quot;,&quot;bbb&quot;,&quot;cc&quot;,&quot;d&quot;]로 정렬된다.
.toArray(String[]::new)로 처리한 결과 스트림을 다시 문자열 배열로 변환해 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.Arrays;

class Solution {
    public String[] solution(String myString) {
        String[] parts = myString.split(&quot;x&quot;);
        return Arrays.stream(parts)
                     .filter(s -&gt; !s.isEmpty())
                     .sorted()
                     .toArray(String[]::new);
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

import java.util.Arrays;

// 프로그래머스 문자열 잘라서 정렬하기
public class Main79 {
    public static void main(String[] args) {
        String myString1 = &quot;axbxcxdx&quot;;
        String myString2 = &quot;dxccxbbbxaaaa&quot;;

        System.out.println(Arrays.toString(solution(myString1))); // [a, b, c, d]
        System.out.println(Arrays.toString(solution(myString2))); // [aaaa, bbb, cc, d]
    }

    public static String[] solution(String myString) {
        String[] parts = myString.split(&quot;x&quot;);
        return Arrays.stream(parts)
                .filter(s -&gt; !s.isEmpty())
                .sorted()
                .toArray(String[]::new);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/0fe2fafa-6f57-49cb-b973-db00e4a6aa95/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 x 사이의 개수]]></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-x-%EC%82%AC%EC%9D%B4%EC%9D%98-%EA%B0%9C%EC%88%98-uk4unyta</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-x-%EC%82%AC%EC%9D%B4%EC%9D%98-%EA%B0%9C%EC%88%98-uk4unyta</guid>
            <pubDate>Sat, 11 Jul 2026 15:08:21 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/d846a41d-a1a9-4e75-8f72-36ef6c128598/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 myString이 주어집니다.
myString을 문자 &quot;x&quot;를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main78 sol = new Main78();로 객체를 생성한다.
예시 입력 문자열 두 개를 선언 후 solution 메서드를 호출해 결과를 받는다.
Arrays.toString을 이용해 결과 배열을 문자열 형태로 출력한다.
myString.split(&quot;x&quot;, -1)
여기에서 &quot;x&quot;를 기준으로 문자열을 분리한다.
두 번째 매개변수 -1은 문자열 끝에 빈 문자열이 포함되도록 한다.
즉, &quot;x&quot;가 문자열 끝에 있을 때도 빈 문자열이 결과에 들어온다.
String[] parts 배열에 분리된 문자열들이 담긴다.
int[] answer = new int[parts.length];
부분 문자열의 개수만큼 정수 배열을 만든다.
for 반복문을 통해 각 부분 문자열의 길이를 answer 배열에 저장한다.
parts[i].length()는 부분 문자열의 문자 수를 의미한다.
최종적으로 각 &quot;x&quot; 사이 문자열의 길이 배열인 answer를 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int[] solution(String myString) {
        String[] parts = myString.split(&quot;x&quot;, -1); 
        int[] answer = new int[parts.length];
        for (int i = 0; i &lt; parts.length; i++) {
            answer[i] = parts[i].length();
        }
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

import java.util.Arrays;

// 프로그래머스 x 사이의 개수
public class Main78 {
    public static void main(String[] args) {
        Main78 sol = new Main78();

        String myString1 = &quot;oxooxoxxox&quot;;
        int[] result1 = sol.solution(myString1);
        System.out.println(Arrays.toString(result1));  // [1, 2, 1, 0, 1, 0]

        String myString2 = &quot;xabcxdefxghi&quot;;
        int[] result2 = sol.solution(myString2);
        System.out.println(Arrays.toString(result2));  // [0, 3, 3, 3]
    }

    public int[] solution(String myString) {
        String[] parts = myString.split(&quot;x&quot;, -1);
        int[] answer = new int[parts.length];
        for (int i = 0; i &lt; parts.length; i++) {
            answer[i] = parts[i].length();
        }
        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/f1799f26-8b3e-457e-95c9-0e48ac18693e/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-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%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-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%ED%95%98%EA%B8%B0-2</guid>
            <pubDate>Fri, 10 Jul 2026 15:15:51 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/527d1853-0478-49b9-af38-d45ea77a9c71/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>Main77 클래스는 Java 실행 진입점인 main 메서드를 포함한다.
이곳에서 Solution11 클래스의 solution 메서드를 호출하여 테스트한다.
두 개의 문자열 예제 &quot; i love you&quot;와 &quot; programmers &quot;를 미리 입력해준다.
printArray 메서드는 결과로 나온 문자열 배열을 보기 좋게 출력하기 위한 유틸리티 역할을 한다.
배열을 [, ] 사이에 출력하며 각 요소는 쉼표와 공백으로 구분한다.
Solution11 클래스 내 solution 메서드는 주어진 문자열 my_string을
먼저 trim() 함수로 양끝 공백을 제거한다.
그 후, 정규 표현식 &quot;\\s+&quot;을 이용하여 한 개 이상의 연속된 공백을 기준으로 문자열을 분리한다.
이렇게 분리한 단어들을 배열로 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String[] solution(String my_string) {
        my_string = my_string.trim();
        String[] answer = my_string.split(&quot;\\s+&quot;);
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 공백으로 구분하기 2
public class Main77 {
    public static void main(String[] args) {
        // Solution 클래스의 solution 메서드 테스트
        Solution11 solution = new Solution11();

        String input1 = &quot; i    love  you&quot;;
        String input2 = &quot;    programmers  &quot;;

        String[] result1 = solution.solution(input1);
        String[] result2 = solution.solution(input2);

        // 결과 출력
        printArray(result1); // [i, love, you]
        printArray(result2); // [programmers]
    }

    // 배열 출력용 보조 메서드
    public static void printArray(String[] arr) {
        System.out.print(&quot;[&quot;);
        for(int i = 0; i &lt; arr.length; i++){
            System.out.print(arr[i]);
            if(i != arr.length -1)
                System.out.print(&quot;, &quot;);
        }
        System.out.println(&quot;]&quot;);
    }
}

class Solution11 {
    public String[] solution(String my_string) {
        my_string = my_string.trim();
        String[] answer = my_string.split(&quot;\\s+&quot;);
        return answer;
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/24b89f9c-11c3-4d57-909d-4638d6bd444e/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-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%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-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%ED%95%98%EA%B8%B0-1</guid>
            <pubDate>Thu, 09 Jul 2026 15:18:06 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/037407e9-8e2f-4470-831b-62f039377d9c/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>public String[] solution(String my_string) 메서드는 입력된 문자열 my_string을 split(&quot; &quot;) 메서드를 사용하여 공백 한 칸 기준으로 나눈 단어들을 배열로 반환하는 기능을 수행한다.
split(&quot; &quot;) 메서드는 공백 문자 한 칸을 기준으로 문자열을 분리하며, 이렇게 생성된 부분 문자열들을 배열로 묶어 반환한다.
main 메서드 내에서는 먼저 Main76 클래스 객체 sol을 생성한다.
input1에 &quot;i love you&quot;를 넣고 solution 메서드를 호출하여 결과 배열을 얻는다.
배열의 각 요소를 큰따옴표(&quot;)로 감싸고 쉼표와 공백으로 구분하여 출력한다. 마지막 요소 뒤에는 쉼표를 출력하지 않도록 조건문을 두었다.
동일하게 input2에 &quot;programmers&quot;를 넣고 결과 배열을 같은 형식으로 출력한다.
출력 결과는 [&quot;i&quot;, &quot;love&quot;, &quot;you&quot;] 및 [&quot;programmers&quot;]와 같이 프로그래머스 문제 예시와 동일한 형식을 갖는다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String[] solution(String my_string) {
        String[] answer = my_string.split(&quot; &quot;);
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 공백으로 구분하기 1
public class Main76 {
    public String[] solution(String my_string) {
        return my_string.split(&quot; &quot;);
    }

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

        // 테스트 예제 1
        String input1 = &quot;i love you&quot;;
        String[] result1 = sol.solution(input1);
        System.out.print(&quot;[&quot;);
        for (int i = 0; i &lt; result1.length; i++) {
            System.out.print(&quot;\&quot;&quot; + result1[i] + &quot;\&quot;&quot;);
            if (i != result1.length - 1) {
                System.out.print(&quot;, &quot;);
            }
        }
        System.out.println(&quot;]&quot;);

        // 테스트 예제 2
        String input2 = &quot;programmers&quot;;
        String[] result2 = sol.solution(input2);
        System.out.print(&quot;[&quot;);
        for (int i = 0; i &lt; result2.length; i++) {
            System.out.print(&quot;\&quot;&quot; + result2[i] + &quot;\&quot;&quot;);
            if (i != result2.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/72b5fc4d-73dd-4c75-8d78-4c157653f3eb/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 ad 제거하기]]></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-ad-%EC%A0%9C%EA%B1%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-ad-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 08 Jul 2026 23:01:05 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/e3393b66-143d-40f7-a505-b01903b02261/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 배열 strArr가 주어집니다.
배열 내의 문자열 중 &quot;ad&quot;라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드 내에서 ArrayList&lt;String&gt; resultList = new ArrayList&lt;&gt;();로 결과를 저장할 리스트를 생성한다.
배열은 크기 변경이 어려우므로, 리스트를 활용해 동적으로 문자열을 저장하기 위함이다.
for (String str : strArr) 반복문을 통해 입력받은 문자열 배열의 각 원소를 순서대로 검사한다.
if (!str.contains(&quot;ad&quot;)) 조건문으로 현재 문자열 str에 &quot;ad&quot;가 포함되어 있지 않은 경우에만 리스트에 추가한다.
이는 &quot;ad&quot;가 포함된 문자열을 걸러내 제거하기 위함이다.
반복문 종료 후, resultList.toArray(new String[0])를 호출하여 리스트를 다시 배열로 변환해서 반환한다.
new String[0]은 반환 배열 타입을 명시하는 역할을 한다.
main 메서드에서는 두 가지 입출력 예를 테스트한다.
첫 번째 예제 {&quot;and&quot;, &quot;notad&quot;, &quot;abcd&quot;}에서 &quot;notad&quot;가 &quot;ad&quot;를 포함하므로 제거되고, 나머지 &quot;and&quot;와 &quot;abcd&quot;가 출력된다.
두 번째 예제 {&quot;there&quot;, &quot;are&quot;, &quot;no&quot;, &quot;a&quot;, &quot;ds&quot;}에서는 &quot;ad&quot;가 부분 문자열로 포함된 문자열이 없으므로 입력배열 그대로 출력된다.
출력 시 Arrays.toString()으로 배열 전체를 한 줄 문자열 형태로 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">import java.util.ArrayList;

class Solution {
    public String[] solution(String[] strArr) {
        ArrayList&lt;String&gt; resultList = new ArrayList&lt;&gt;();
        for (String str : strArr) {
            if (!str.contains(&quot;ad&quot;)) {
                resultList.add(str);
            }
        }

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

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

// 프로그래머스 ad 제거하기
public class Main75 {
    public static String[] solution(String[] strArr) {
        ArrayList&lt;String&gt; resultList = new ArrayList&lt;&gt;();

        for (String str : strArr) {
            // &quot;ad&quot;를 포함하지 않는 문자열만 리스트에 추가
            if (!str.contains(&quot;ad&quot;)) {
                resultList.add(str);
            }
        }

        // ArrayList를 String 배열로 변환하여 반환
        return resultList.toArray(new String[0]);
    }

    public static void main(String[] args) {
        // 입출력 예 1
        String[] input1 = {&quot;and&quot;, &quot;notad&quot;, &quot;abcd&quot;};
        String[] result1 = solution(input1);
        System.out.println(Arrays.toString(result1));
        // 출력: [and, abcd]

        // 입출력 예 2
        String[] input2 = {&quot;there&quot;, &quot;are&quot;, &quot;no&quot;, &quot;a&quot;, &quot;ds&quot;};
        String[] result2 = solution(input2);
        System.out.println(Arrays.toString(result2));
        // 출력: [there, are, no, a, ds] (&quot;a&quot;와 &quot;ds&quot;는 각각 분리되어 있어 &quot;ad&quot;를 포함하지 않으므로 그대로 유지됨)
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a79bfe45-55c6-4bd8-93da-085805cbd321/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%9D%B4-%EB%AA%87-%EB%B2%88-%EB%93%B1%EC%9E%A5%ED%95%98%EB%8A%94%EC%A7%80-%EC%84%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-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4-%EB%AA%87-%EB%B2%88-%EB%93%B1%EC%9E%A5%ED%95%98%EB%8A%94%EC%A7%80-%EC%84%B8%EA%B8%B0</guid>
            <pubDate>Tue, 07 Jul 2026 15:10:05 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/2f54c95f-13f0-49d7-abb8-74f3986aac33/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 myString과 pat이 주어집니다.
myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 myString과 pat 두 개의 문자열을 매개변수로 받는다.
첫 번째로 answer라는 정수 변수로 등장 횟수를 저장할 용도를 준비한다.
초기값은 0이다.
patLen에 pat 문자열의 길이를 담는다.
이는 몇 자리 길이의 문자열을 부분 추출할지를 알기 위한 것이다.
검사할 범위 limit을 결정하는데, 이는 myString 전체 길이에서 pat 길이를 뺀 후 1을 더한 값이다.
이유는 인덱스 i부터 i + patLen까지 자를 때, 범위 초과를 막기 위해서이다.
for 문으로 i를 0부터 limit - 1까지 반복한다.
매 번 myString.substring(i, i + patLen)으로 myString에서 i번 인덱스부터 patLen 길이만큼 부분 문자열을 추출한다.
이 부분 문자열과 pat가 equals 메서드로 같은지 비교한다.
같으면 answer를 1 증가시킨다.
반복이 끝나면 answer에 저장된 pat 등장 횟수를 반환한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int patLen = pat.length();
        int limit = myString.length() - patLen + 1;

        for (int i = 0; i &lt; limit; i++) {
            String sub = myString.substring(i, i + patLen);
            if (sub.equals(pat)) {
                answer++;
            }
        }

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

// 프로그래머스 문자열이 몇 번 등장하는지 세기
public class Main74 {
    public static int solution(String myString, String pat) {
        int answer = 0;
        int patLen = pat.length();
        int limit = myString.length() - patLen + 1;

        for (int i = 0; i &lt; limit; i++) {
            String sub = myString.substring(i, i + patLen);
            if (sub.equals(pat)) {
                answer++;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        // 테스트용 예시
        String myString1 = &quot;banana&quot;;
        String pat1 = &quot;ana&quot;;
        System.out.println(solution(myString1, pat1)); // 예상 출력: 2

        String myString2 = &quot;aaaa&quot;;
        String pat2 = &quot;aa&quot;;
        System.out.println(solution(myString2, pat2)); // 예상 출력: 3
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/056a31fa-d4e6-450d-9efd-ec66b5fcfa88/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%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%81%9D%EB%82%98%EB%8A%94-%EA%B0%80%EC%9E%A5-%EA%B8%B4-%EB%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4-%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-%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%81%9D%EB%82%98%EB%8A%94-%EA%B0%80%EC%9E%A5-%EA%B8%B4-%EB%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Mon, 06 Jul 2026 15:21:40 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/992216d1-f2a5-4e12-a350-ac0467b19925/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 myString과 pat가 주어집니다.
myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 두 개의 매개변수, 즉 원본 문자열인 myString과 찾고자 하는 패턴 문자열 pat를 받는다.
myString.lastIndexOf(pat) 메서드를 호출하여 myString 안에서 pat가 마지막으로 나타나는 시작 인덱스 위치를 찾는다.
이 위치는 lastIndex 변수에 저장된다.
pat가 위치한 구간의 끝 위치를 구하기 위해 lastIndex에 pat.length()를 더해 endIndex에 저장한다.
endIndex는 pat 부분까지 포함한 부분 문자열의 경계가 된다.
myString.substring(0, endIndex)로 문자열의 처음부터 pat가 끝나는 위치까지 자른다.
이렇게 하면 pat로 끝나는 가장 긴 부분 문자열이 반환된다.
main 메서드에서는 두 가지 테스트 케이스를 실행해 결과를 출력한다.
&quot;AbCdEFG&quot;와 &quot;dE&quot;가 입력되었을 때 &quot;AbCdE&quot;가 출력되고, &quot;AAAAaaaa&quot;와 &quot;a&quot;가 입력되었을 때 &quot;AAAAaaaa&quot;가 출력된다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String myString, String pat) {
        int lastIndex = myString.lastIndexOf(pat);
        int endIndex = lastIndex + pat.length();
        String answer = myString.substring(0, endIndex);
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
public class Main73 {
    public static void main(String[] args) {
        // 테스트 예제
        String myString1 = &quot;AbCdEFG&quot;;
        String pat1 = &quot;dE&quot;;
        System.out.println(solution(myString1, pat1)); // 기대값: AbCdE

        String myString2 = &quot;AAAAaaaa&quot;;
        String pat2 = &quot;a&quot;;
        System.out.println(solution(myString2, pat2)); // 기대값: AAAAaaaa
    }

    // 패턴으로 끝나는 가장 긴 부분 문자열 찾기
    public static String solution(String myString, String pat) {
        int lastIndex = myString.lastIndexOf(pat);
        int endIndex = lastIndex + pat.length();
        return myString.substring(0, endIndex);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/3bbdb672-cf20-4403-b54d-eb201d8d9dfd/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%8A%B9%EC%A0%95%ED%95%9C-%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%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-%ED%8A%B9%EC%A0%95%ED%95%9C-%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Sun, 05 Jul 2026 15:28:51 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/1be4dd2e-fe50-4428-ac27-c346199f65a0/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>영소문자로 이루어진 문자열 my_string과 영소문자 1글자로 이루어진 문자열 alp가 매개변수로 주어질 때, my_string에서 alp에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>주어진 코드는 solution 메서드를 통해 문자열 my_string에서 특정 문자 alp에 해당하는 모든 문자를 대문자로 바꾼 새로운 문자열을 반환하는 기능을 한다.
solution 메서드는 my_string.replace(alp, alp.toUpperCase())를 사용하여 alp 문자를 alp.toUpperCase()로 변환하여 모두 치환한다.
즉, 소문자인 alp를 대문자로 바꾸는 동작을 수행한다.
main 메서드에서는 Main72 클래스의 객체를 생성한 뒤 solution 메서드를 호출해 결과를 출력한다.
&quot;programmers&quot;에서 &quot;p&quot;를 &quot;P&quot;로 바꾸어 &quot;Programmers&quot;를 출력하고, &quot;lowercase&quot;에 &quot;x&quot;가 없으므로 원래 문자열을 그대로 출력한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String my_string, String alp) {
        return my_string.replace(alp, alp.toUpperCase());
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 특정한 문자를 대문자로 바꾸기
public class Main72 {
    public String solution(String my_string, String alp) {
        return my_string.replace(alp, alp.toUpperCase());
    }

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

        String result1 = sol.solution(&quot;programmers&quot;, &quot;p&quot;);
        System.out.println(result1);  // 출력: Programmers

        String result2 = sol.solution(&quot;lowercase&quot;, &quot;x&quot;);
        System.out.println(result2);  // 출력: lowercase
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/747256da-c3bc-4277-8d2f-597dde3251ac/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 A 강조하기]]></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-A-%EA%B0%95%EC%A1%B0%ED%95%98%EA%B8%B0-ysyzdrll</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-A-%EA%B0%95%EC%A1%B0%ED%95%98%EA%B8%B0-ysyzdrll</guid>
            <pubDate>Sat, 04 Jul 2026 15:15:15 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/acb50b64-a497-4110-903b-379975cc641b/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 myString이 주어집니다.
myString에서 알파벳 &quot;a&quot;가 등장하면 전부 &quot;A&quot;로 변환하고, &quot;A&quot;가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>solution 메서드는 입력받은 문자열 myString을 한 글자씩 차례로 확인한다.
각 문자 ch가 소문자 &#39;a&#39;라면, 대문자 &#39;A&#39;로 변환하여 answer에 추가한다.
만약 문자가 대문자 알파벳(&#39;A&#39; 이상 &#39;Z&#39; 이하)이고 동시에 &#39;A&#39;가 아니라면, 그 문자를 소문자로 변환하여 answer에 추가한다.
위 두 조건에 해당하지 않는 나머지 문자는 그대로 answer에 추가한다.
이렇게 문자열 전체를 처리한 뒤, StringBuilder에 쌓인 결과를 문자열로 변환하여 반환한다.
main 메서드에서는 두 개의 테스트 문자열을 준비하여 solution을 실행하고, 변환된 결과를 출력하도록 하였다.
출력 결과는 각 문자열 내의 소문자 &#39;a&#39;가 대문자 &#39;A&#39;로, 그리고 &#39;A&#39;를 제외한 대문자가 모두 소문자로 변환된 형태임을 확인할 수 있다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String myString) {
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i &lt; myString.length(); i++) {
            char ch = myString.charAt(i);
            if (ch == &#39;a&#39;) {
                answer.append(&#39;A&#39;);
            } else if (ch &gt;= &#39;A&#39; &amp;&amp; ch &lt;= &#39;Z&#39; &amp;&amp; ch != &#39;A&#39;) {
                answer.append(Character.toLowerCase(ch));
            } else {
                answer.append(ch);
            }
        }
        return answer.toString();
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 A 강조하기
public class Main71 {
    public static String solution(String myString) {
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i &lt; myString.length(); i++) {
            char ch = myString.charAt(i);
            if (ch == &#39;a&#39;) {
                answer.append(&#39;A&#39;);
            } else if (ch &gt;= &#39;A&#39; &amp;&amp; ch &lt;= &#39;Z&#39; &amp;&amp; ch != &#39;A&#39;) {
                answer.append(Character.toLowerCase(ch));
            } else {
                answer.append(ch);
            }
        }
        return answer.toString();
    }

    public static void main(String[] args) {
        String test1 = &quot;abstract algebra&quot;;
        String test2 = &quot;PrOgRaMmErS&quot;;

        System.out.println(solution(test1)); // AbstrAct AlgebrA
        System.out.println(solution(test2)); // progrAmmers
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/a901bfe0-0aff-4fef-b520-7b410c210008/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%97%90%EC%84%9C-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EB%B3%80%ED%99%98%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%B0%B0%EC%97%B4%EC%97%90%EC%84%9C-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 03 Jul 2026 15:43:02 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/c6f68f08-d1f9-483b-acf2-8ddc9903c5c0/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>문자열 배열 strArr가 주어집니다.
모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>입력 배열 strArr의 길이로 새 배열 answer를 만든다.
반복문으로 인덱스 i를 0부터 끝까지 순회한다.
짝수 인덱스일 경우 strArr[i]를 toLowerCase()로 모두 소문자로 변환해 answer[i]에 저장한다.
홀수 인덱스일 경우 strArr[i]를 toUpperCase()로 모두 대문자로 변환해 answer[i]에 저장한다.
마지막에 변환된 배열 answer를 반환한다.
입력받은 문자열 배열을 출력할 때 [ ] 대괄호로 감싼다.
배열 각 요소는 큰따옴표 &quot;로 감싸 출력한다.
요소 사이에는 쉼표와 공백으로 구분한다.
마지막 요소 뒤에 쉼표가 붙지 않도록 처리한다.
배열 출력 형식을 문제에서 요구하는 모양에 맞추기 위한 유틸 함수다.
두 개의 테스트용 배열 input1과 input2를 만들었다.
각각을 solution 메서드로 처리한 결과를 받아 result1, result2에 저장한다.
그리고 printArrayWithBrackets 함수를 통해 결과를 배열 형태로 깔끔하게 출력한다.
이를 통해 결과가 [ &quot;aaa&quot;, &quot;BBB&quot;, &quot;ccc&quot;, &quot;DDD&quot; ]처럼 문제 예시처럼 보인다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String[] solution(String[] strArr) {
        String[] answer = new String[strArr.length];

        for (int i = 0; i &lt; strArr.length; i++) {
            if (i % 2 == 0) {
                answer[i] = strArr[i].toLowerCase();
            } else {
                answer[i] = strArr[i].toUpperCase();
            }
        }

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

// 프로그래머스 배열에서 문자열 대소문자 변환하기
public class Main70 {
    public static String[] solution(String[] strArr) {
        String[] answer = new String[strArr.length];

        for (int i = 0; i &lt; strArr.length; i++) {
            if (i % 2 == 0) {
                answer[i] = strArr[i].toLowerCase();
            } else {
                answer[i] = strArr[i].toUpperCase();
            }
        }

        return answer;
    }

    public static void printArrayWithBrackets(String[] arr) {
        System.out.print(&quot;[&quot;);
        for (int i = 0; i &lt; arr.length; i++) {
            System.out.print(&quot;\&quot;&quot; + arr[i] + &quot;\&quot;&quot;);
            if (i != arr.length - 1) {
                System.out.print(&quot;, &quot;);
            }
        }
        System.out.println(&quot;]&quot;);
    }

    public static void main(String[] args) {
        String[] input1 = {&quot;AAA&quot;, &quot;BBB&quot;, &quot;CCC&quot;, &quot;DDD&quot;};
        String[] result1 = solution(input1);
        printArrayWithBrackets(result1);

        String[] input2 = {&quot;aBc&quot;, &quot;AbC&quot;};
        String[] result2 = solution(input2);
        printArrayWithBrackets(result2);
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/7ac2205d-f7b6-4944-9312-561ca8699692/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%86%8C%EB%AC%B8%EC%9E%90%EB%A1%9C-%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%86%8C%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Thu, 02 Jul 2026 17:56:58 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/eb5660e5-81ea-490a-a6c7-d0717356cb2f/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>알파벳으로 이루어진 문자열 myString이 주어집니다.
모든 알파벳을 소문자로 변환하여 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>메인 메서드 내부에서 Main69 solution = new Main69();를 통해 Main69 클래스의 인스턴스를 생성했다. 객체를 만든 이유는 solution 메서드가 인스턴스 메서드이기 때문이다.
test1과 test2라는 두 개의 문자열 변수를 선언하고 각각 &quot;aBcDeFg&quot;, &quot;aaa&quot; 값을 넣었다.
System.out.println(solution.solution(test1));와 System.out.println(solution.solution(test2));는 각각 solution 메서드를 호출해서 반환된 소문자 변환 결과를 출력하는 구문이다.
public String solution(String myString) 메서드는 문자열을 받아 myString.toLowerCase()를 호출해 모든 문자를 소문자로 변환하여 반환한다.
Java 표준 라이브러리 함수 toLowerCase()는 내부적으로 문자열 전체를 한꺼번에 소문자로 바꾸는 기능을 수행한다.
따라서 이 프로그램은 입력 문자열을 소문자로 바꾸어 출력하는 단순하면서도 효과적인 기능을 수행한다.
IntelliJ 등 IDE에서 실행하면 두 줄에 걸쳐 각각 abcdefg와 aaa가 콘솔에 출력될 것이다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String myString) {
        String answer = myString.toLowerCase();
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 소문자로 바꾸기
public class Main69 {
    public static void main(String[] args) {
        Main69 solution = new Main69();

        String test1 = &quot;aBcDeFg&quot;;
        String test2 = &quot;aaa&quot;;

        System.out.println(solution.solution(test1)); // 출력: abcdefg
        System.out.println(solution.solution(test2)); // 출력: aaa
    }

    public String solution(String myString) {
        return myString.toLowerCase();
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/5afa716d-6395-4b24-9fc5-e4a91bace015/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%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%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-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Wed, 01 Jul 2026 17:17:50 GMT</pubDate>
            <description><![CDATA[<h3 id="문제">문제</h3>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/231ee8f2-c27a-4f81-abc9-af858c8f772f/image.PNG" alt=""></p>
<p>내가 생각했을때 문제에서 원하는부분</p>
<pre><code>알파벳으로 이루어진 문자열 myString이 주어집니다.
모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.</code></pre><p>내가 이 문제를 보고 생각해본 부분</p>
<pre><code>public static String solution(String myString) 메서드는 입력받은 문자열 myString을 대문자로 변환하여 반환하는 역할을 한다.
여기서 myString.toUpperCase()는 자바 내장 메서드로 문자열 내 모든 알파벳을 대문자로 변환한다는 점에서 핵심이다.
main 메서드는 자바 프로그램의 시작점이며, 이곳에서 문제 해결 함수 solution을 두 가지 입력값 &quot;aBcDeFg&quot;와 &quot;AAA&quot;에 대해 호출한다.
각각의 결과 값은 result1, result2에 저장되어 System.out.println으로 화면에 출력된다.
출력 결과는 각각 &quot;ABCDEFG&quot;와 &quot;AAA&quot;가 되어 문제에서 요구한 대문자 변환 결과와 일치한다.</code></pre><p>코드로 구현</p>
<pre><code class="language-java">class Solution {
    public String solution(String myString) {
        String answer = myString.toUpperCase();
        return answer;
    }
}</code></pre>
<p>프로그래머스 코드</p>
<pre><code class="language-java">package programmers;

// 프로그래머스 대문자로 바꾸기
public class Main68 {
    public static String solution(String myString) {
        return myString.toUpperCase();
    }

    public static void main(String[] args) {
        String input1 = &quot;aBcDeFg&quot;;
        String input2 = &quot;AAA&quot;;

        String result1 = solution(input1);
        String result2 = solution(input2);

        System.out.println(result1);  // ABCDEFG
        System.out.println(result2);  // AAA
    }
}</code></pre>
<p>위에 있는 코드를 변경한 코드</p>
<p><img src="https://velog.velcdn.com/images/youngjun_10/post/73e48302-4dac-4aee-b16a-f039d8953a1b/image.PNG" alt=""></p>
<h3 id="마무리">마무리</h3>
<p>코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.</p>
]]></description>
        </item>
    </channel>
</rss>