<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Swimming_Ram</title>
        <link>https://velog.io/</link>
        <description>Swimming is good at loss Weight</description>
        <lastBuildDate>Sat, 02 Aug 2025 12:26:12 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Swimming_Ram</title>
            <url>https://velog.velcdn.com/images/swimming_ram/profile/fcb6e6f4-dc11-4b51-b898-4c22346bd211/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. Swimming_Ram. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/swimming_ram" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[자료구조] LinkedLIst, Stack]]></title>
            <link>https://velog.io/@swimming_ram/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-LinkedLIst-Stack</link>
            <guid>https://velog.io/@swimming_ram/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-LinkedLIst-Stack</guid>
            <pubDate>Sat, 02 Aug 2025 12:26:12 GMT</pubDate>
            <description><![CDATA[<p>Linked List에서 이어지는 3가지 자료구조 
<strong>Stack, Queue, Deque</strong>에 대하여 정리한 글입니다.</p>
<h3 id="linked-list">Linked List</h3>
<p>LinkedList는 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식입니다.
<img src="https://velog.velcdn.com/images/swimming_ram/post/90441ef1-4d69-48af-b4ed-4ea4209f984b/image.png" alt=""></p>
<p>자바에서는 포인터개념이 없으니 포인터 역할을 수행하는 레퍼런스로 구현합니다.</p>
<h4 id="단방향-연결-리스트">단방향 연결 리스트</h4>
<p>단방향 연결 리스트는 다음 노드에 대한 참조 값만을 가진 단순한 형태의 연결 리스트 입니다.</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/2433f47f-9a4c-48f3-b668-f4189076847a/image.png" alt=""></p>
<p>각 노드에는 데이터값과 다음 노드의 주솟값이 저장되있는 부분이 있어 물리적으로는 연결되있지 않지만 주솟값 참조로 리스트 처럼 연결되는 구조를 만들 수 있습니다. 이러한 특성으로 배열과 달리 크기를 자유자제로 늘리고 줄일 수 있습니다.</p>
<h4 id="양방향-연결-리스트">양방향 연결 리스트</h4>
<p>다음 노드의 참조 뿐 아닌 이전노드의 주솟값까지 저장하면 이중 양방향 연결 리스트가 됩니다. 단방향 연결 리스트와 다르게 뒤쪽으로 탐색하는것도 가능해 집니다.</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/31187ff4-2c74-4b73-9548-ae9d746e515e/image.png" alt=""></p>
<h4 id="스택">스택</h4>
<p>스택은 쌓다 라는 의미를 가지고 있는것처럼 단방향에서 
In, Out이 가능하며, Last In First Out구조를 가지고 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/cce1c88b-6334-4bb3-a5de-94aea30626fb/image.png" alt=""></p>
<p>스택의 기능에는</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/c55da2e0-f78c-4c16-904d-cda559783558/image.png" alt=""></p>
<p>*<em>1. pop *</em>
들어가있는 가장 위에있는 요소를 제거하고 반환하는 역할을 합니다.
<img src="https://velog.velcdn.com/images/swimming_ram/post/135530aa-78fb-4eb5-9efd-a0776a4f19fc/image.png" alt=""></p>
<p>*<em>2. push *</em>
스택의 최상단에 새로운 요소를 추가합니다.</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/2b56e206-e980-4845-aa6b-a71dd541b827/image.png" alt=""></p>
<p><strong>3. isEmpty()</strong>
스택이 비어있는지 확인합니다.</p>
<pre><code class="language-java">public class Stack {
    public static void main(String[] args) {

        Stack&lt;Integer&gt; ST = new Stack&lt;&gt;();

        System.out.println(ST);
        /// 출력 []
        System.out.println(St.isEmpty());
        // 출력 : true
    }
}
</code></pre>
<p>중간에 요소를 하나 추가해서 다시 출력해보면</p>
<pre><code class="language-java">public class Singly_LinkedList {
    public static void main(String[] args) {

        Stack&lt;Integer&gt; ST = new Stack&lt;&gt;();

        ST.push(1);

        System.out.println(ST);
        // 출력 [1]
        System.out.println(ST.isEmpty());
        //출력 : false
    }
}
</code></pre>
<p><strong>4.Size</strong>
스택의 길이를 출력합니다.</p>
<p>아잇 쓰다보니 너무길어서 큐랑, 디큐는 내일쓸래요 ..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[싸피 3주차 4주차 회고]]></title>
            <link>https://velog.io/@swimming_ram/%EC%8B%B8%ED%94%BC-3%EC%A3%BC%EC%B0%A8-4%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@swimming_ram/%EC%8B%B8%ED%94%BC-3%EC%A3%BC%EC%B0%A8-4%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Sat, 02 Aug 2025 11:54:00 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/swimming_ram/post/1e186b95-6003-4613-a1cf-5fb9d3102859/image.png" alt=""></p>
<p>싸피 3, 4주 회고입니다.</p>
<p>본격적인 코딩 교육에 들어갔습니다.</p>
<p>본인 입으로 말하기 뭐하지만 솔직히 대학 4년동안 재대로 된 코딩공부 (알고리즘, 자료구조, 포트폴리오, 프로젝트)등등 하지않고 도피처로 느낌으로 택한 싸피였습니다.</p>
<p>여기서 그럭저럭 공부하면 괜찮은 기업에 취직 할 수 있겠지 라는 지금 생각하면 말도 안되는 생각으로 들어왔었던 싸피였는데..</p>
<p>바로 생각을 고쳐먹게 되었습니다.</p>
<p>요즘 싸피 취업률이 예전만 못하다, 흔한 국비랑 다를바 없다, 라는 얘기도 심심치 않게 들려오는데.</p>
<p>사람 별로 차이가 있어 그렇게 느낄 수 있다고 생각합니다만</p>
<p>제가 느끼기에는 아무것도 없는 사람이 1년만에 좋은곳에 취직 할 수 있는 확률이 얼마나 될까? 라는 질문을 던져 볼 수 있을것 같습니다.</p>
<p>저처럼 대학 4년간 아무것도 하지않고 졸업한 사람이 싸피에 와서 1년만에 괜찮은 기업에 취직한다? 누구나 싸피를 선택해 교육을 듣고 좋은 곳에 취직을 하지 않을까요?</p>
<p>이야기가 다른곳으로 갔는데 다시 돌아오면
3, 4주에는 자바 문법을 공부했습니다. 파이썬으로 학교생활을 보낸 저로서는 거의 처음접하는 자바문법, 알고리즘들로 머리가 터질것 같았습니다. 다른 친구들은 이미 잘하는 친구들로 넘쳐 제가 스트레스받고 압박 받는동안 잘 소화하는 모습을 보여줬습니다. 이걸 보면서 대학 4년간 아무생각없이 생활한 저한테 화가 나더라구요 ㅎㅎ.. </p>
<p>다행히 제가 어려워하는걸 주변 친구들에게 질문할 때 마다 잘 알려주셔서 하루하루 버티고 있습니다.</p>
<p>1년만에 대학생활 + @ 기간동안 열심히 해온 동기들을 앞지른다는건 양심이 없는 생각일지도 모르겠습니다.</p>
<p>하지만 싸피에 있는 여러 관통프로젝트, 협업할때 저랑 페어가 된 동기들에게 누가 되지 않도록 열심히 해야겠다는  생각은 점점 커지고 있습니다. </p>
<p>만약 싸피 15기, 그 이후 기수에 지원하실 분들중에 저처럼 어떻게든 되겠지.. 라는 생각을 가지고 계신 분들이 계시다면 .. 해당 반에 맞는 언어지식, 알고리즘, 자료구조 등등 최소한의공부는 하고 오시면 좋을것 같습니다.. 진짜 고생해요 ..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[알고리즘 - 재귀]]></title>
            <link>https://velog.io/@swimming_ram/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9E%AC%EA%B7%80</link>
            <guid>https://velog.io/@swimming_ram/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9E%AC%EA%B7%80</guid>
            <pubDate>Sat, 02 Aug 2025 07:25:55 GMT</pubDate>
            <description><![CDATA[<h2 id="함수가-자기-자신을-호출하는-것">함수가 자기 자신을 호출하는 것.</h2>
<p>복잡한 내용을 단순하게 만드는 함수.</p>
<h2 id="구조---재귀-단계">구조 - 재귀 단계</h2>
<h3 id="기본-단계-basic_case">기본 단계 Basic_Case</h3>
<ul>
<li>재귀 함수가 계속 호출되지 않고 종료되는 시점</li>
</ul>
<h3 id="재귀--단계-recursive-case">재귀  단계 Recursive Case</h3>
<ul>
<li>함수가 <strong>자기 자신을 호출</strong>하는 단계</li>
<li>함수의 <strong>입력이 점점 작아지는 패턴</strong>을 가져야 함</li>
</ul>
<h3 id="예시">예시</h3>
<ol>
<li>팩토리얼</li>
</ol>
<ul>
<li>양의 정수 N에 대해 1부터 n까지 모든 정수를 곱한 값.</li>
</ul>
<pre><code class="language-java">package 재귀.순조부;

import java.io.*;

public class Factorial {
    public static void main(String[] args) throws IOException {

        System.out.println(fatorial(5));
    }
    public static int fatorial(int n) {
        if (n == 0) {
            return 1;
        } else {
            return n * fatorial(n - 1);
        }
    }
}
</code></pre>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/3786af60-3d51-4dff-a03f-6f779ffbf8b5/image.jpg" alt=""></p>
<h3 id="2-n까지의-자연수의-합">2. N까지의 자연수의 합</h3>
<pre><code class="language-java">package 재귀.순조부;

import java.io.*;

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

        int target_num = Integer.parseInt(br.readLine());

        //basis Part
        System.out.println(reculsive_sum(target_num));
    }

       //recursive Part
    public static int reculsive_sum(int target_num) {
        if (target_num == 1) {
            return 1;
        } else {
            return target_num + reculsive_sum(target_num - 1);
        }
    }

}
</code></pre>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/0b138cda-3ad0-4dcc-8281-b80ccedde623/image.jpeg" alt=""></p>
<h3 id="피보나치">피보나치</h3>
<pre><code class="language-java">package 재귀.순조부;

import java.io.*;

public class Fibonacci {

    public static int fibonacci(int target_num) {
        if (target_num == 0) {
            return 0;
        }

        if (target_num == 1) {
            return 1;
        }

        //Reculsive Part
        return fibonacci(target_num - 1) + fibonacci(target_num - 2);

    }
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int target_num = Integer.parseInt(br.readLine());

        int answer = fibonacci(target_num);
        System.out.println(answer);

    }
}</code></pre>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/f8ac1ae3-d585-42f2-9553-916d9fc796da/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[SSAFY 14기 2주차 후기]]></title>
            <link>https://velog.io/@swimming_ram/SSAFY-14%EA%B8%B0-2%EC%A3%BC%EC%B0%A8-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@swimming_ram/SSAFY-14%EA%B8%B0-2%EC%A3%BC%EC%B0%A8-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Sun, 20 Jul 2025 12:38:25 GMT</pubDate>
            <description><![CDATA[<p>2주차 간단한 후기입니다.</p>
<p>강사님과 만나고 어느정도 동기들과 한두마디 정도 나눠본것 같습니다.</p>
<p>낯을 너무 많이 가려서 힘들지만 다행히 동기분들 모두 좋은 분들이라 한학기 많은 도움 받으면서 지낼 수 있을 것 같습니다.</p>
<p>스타트 캠프가 이번주로 마무리 되었으니 다음주부터는 본격적인 수업을 받을 예정입니다. 다른분들보다 한참 부족한 실력이니 배로 열심히 해서 꼭 이번 학기가 끝낫을 때에는 한사람 몫을 해낼 수 있는 개발자가 되어있었으면 좋겠습니다!</p>
<p>다시한번 스타트 캠프동안 많은 도움 주신 동기분들에게 감사드리며 2주차 후기 마칩니다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_4948_베르트랑 공준(JAVA)]]></title>
            <link>https://velog.io/@swimming_ram/BOJ4948%EB%B2%A0%EB%A5%B4%ED%8A%B8%EB%9E%91-%EA%B3%B5%EC%A4%91JAVA</link>
            <guid>https://velog.io/@swimming_ram/BOJ4948%EB%B2%A0%EB%A5%B4%ED%8A%B8%EB%9E%91-%EA%B3%B5%EC%A4%91JAVA</guid>
            <pubDate>Sun, 20 Jul 2025 12:30:52 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/swimming_ram/post/76a131c4-e9e6-4da7-9d16-80f6fac51706/image.png" alt=""></p>
<pre><code class="language-java">import java.io.*;

public class Main {

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

        while (true) {
            int target_num = Integer.parseInt(br.readLine());
            if (target_num == 0) {
                break;
            }
            int answer_count = 0;


            for (int i = target_num + 1; i &lt;= 2 * target_num; i ++) { // 소수 판별할 숫
                if (isPrime(i)) {
                    answer_count += 1;
                }

            }
            System.out.println(answer_count);
        }
    }
    //소수 판별 알고리즘
    public static boolean isPrime(int num) {
        if (num &lt; 2) return false;
        if (num == 2) return true;

        for (int i = 2; i * i &lt;= num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

}
</code></pre>
<p>실버 2문제기도해서 긴장하면서 들어갔는데 문제를 한번 읽어보고 아까푼 브론즈 2 소수찾기 문제랑 다를게없는데 조건 하나만 추가된느낌이라 진짜 이게 될까 싶은 마음으로 코드를 작성했다.</p>
<p>근데 바로 풀려서 당황.. 생각보다 티어별 난이도차이가 크게나지 않는게 아닐까 하는 희망회로가 돌아갔다.. 앞으로 난이도가 과하게 높다고 피하지말고 한번 도전해보고 다른문제로 넘어가도 될것 같다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_1978_소수찾기 (JAVA)]]></title>
            <link>https://velog.io/@swimming_ram/BOJ1976%EC%86%8C%EC%88%98%EC%B0%BE%EA%B8%B0-JAVA</link>
            <guid>https://velog.io/@swimming_ram/BOJ1976%EC%86%8C%EC%88%98%EC%B0%BE%EA%B8%B0-JAVA</guid>
            <pubDate>Sun, 20 Jul 2025 10:52:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/swimming_ram/post/a97c43bf-4e97-49e3-b586-98f597c0bc84/image.png" alt=""></p>
<pre><code class="language-java">
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int testcase_num = Integer.parseInt(br.readLine());
        int answer_count = 0;

        String[] str_num = br.readLine().split(&quot; &quot;);
        int[] num_list = new int[str_num.length];

        for (int i = 0; i &lt; str_num.length; i++) {
            num_list[i] = Integer.parseInt(str_num[i]);
        }

        for (int j = 0; j &lt; num_list.length; j++) {
            if (isPrime(num_list[j])) {
                answer_count ++;
            }
        }
        System.out.println(answer_count);


    }

    public static boolean isPrime(int num) {
        if (num &lt; 2) return false;
        if (num == 2) return true;

        for (int i = 2; i * i &lt;= num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

}
</code></pre>
<p>메서드를 끌어와서 사용하는 코드를 작성해보았다.
아직까지 자바코드 사용은 어색함이 많다 구현력이 많이 부족하니 배열, 메서드 같은 기능들을 자유자재로 사용할때까지 연습해야 겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JAVA] 정렬에 대하여]]></title>
            <link>https://velog.io/@swimming_ram/JAVA-%EC%A0%95%EB%A0%AC%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC</link>
            <guid>https://velog.io/@swimming_ram/JAVA-%EC%A0%95%EB%A0%AC%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC</guid>
            <pubDate>Wed, 16 Jul 2025 14:54:14 GMT</pubDate>
            <description><![CDATA[<p>정렬에 관한 내용입니다.</p>
<h3 id="오름차순-정렬">오름차순 정렬</h3>
<pre><code class="language-java">
import java.util.*;

public class ArrayPractice {
    public static void main(String[] args) {
        int[] array_num = {5, 4, 3, 2, 1};
        Arrays.sort(array_num); //array_num 이라는 배열을 sort(오름차순 정렬)하겠다.

        System.out.println(Arrays.toString(array_num)); //배열&quot;array_num&quot;의 내용을 to String하겠다 (문자열로 변환하겠다

    }
}
</code></pre>
<h3 id="내림차순-정렬_1">내림차순 정렬_1</h3>
<pre><code class="language-java">import java.util.*;

public class ArrayPractice_2 {
    public static void main(String[] args) {
        Integer [] array_num = {5, 4, 3, 2, 1};
        Arrays.sort(array_num, Collections.reverseOrder()); //내림차순 정렬
        System.out.println(Arrays.toString(array_num));
    }
}
</code></pre>
<p>이처럼 <strong>Collections.reverseOrder()</strong>를 이용하여 정렬을 바꿀 수 있지만.</p>
<p>임시로 바꾸는법도 존재한다.</p>
<p>바로 <strong>부호를 반전시켜 오름차순 정렬</strong>을 시키면 내림차순으로 정렬된다.</p>
<pre><code class="language-java">import java.util.*;

public class ArrayPractice_3 {
    public static void main(String[] args) {
        Integer[] array_num = {5, 4, 3, 2, 1};
        turn_PM(array_num); //부호 반전
        Arrays.sort(array_num);

        turn_PM(array_num);
        System.out.println(Arrays.toString(array_num));
    }
    static void turn_PM(Integer[] temp) {
        for (int i = 0; i &lt; temp.length; i++) {
            temp[i] *= -1;
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_3460_이진수]]></title>
            <link>https://velog.io/@swimming_ram/BOJ3460%EC%9D%B4%EC%A7%84%EC%88%98</link>
            <guid>https://velog.io/@swimming_ram/BOJ3460%EC%9D%B4%EC%A7%84%EC%88%98</guid>
            <pubDate>Mon, 14 Jul 2025 14:52:03 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-java">package samsung01;

import java.io.*;

public class BOJ_3460_이진수 {

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

        int testcase_num = Integer.parseInt(br.readLine());

        for (int i = 0; i &lt; testcase_num; i++) {
            int target_num = Integer.parseInt(br.readLine());
            int idx = 0;

            StringBuilder sb = new StringBuilder();

            while (target_num &gt; 0) {
                if (target_num % 2 == 1) {
                    sb.append(idx).append(&quot; &quot;);
                }
                target_num /= 2;
                idx++;
            }

            System.out.println(sb.toString().trim());
        }
    }
}
</code></pre>
<p>이 문제에서는 여러 개념들을 필요로 한다.</p>
<ol>
<li>StringBuilder와 Int형의 관계</li>
</ol>
<p>왜 인트형변수 idx에 append가 적용될 수 있는가?</p>
<pre><code class="language-java">sb.append(idx).append(&quot; &quot;);
//StringBuilder는 내부 변수를 자동으로 변환해서 처리해 줌

int idx = 2;
sb.append(idx).append(&quot; &quot;);
//이런 느낌으로 작동이 되기 때문에

sb = &quot;2 &quot; 가 된다.</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[메서드] _StringBuilder]]></title>
            <link>https://velog.io/@swimming_ram/%EB%A9%94%EC%84%9C%EB%93%9C-StringBuilder</link>
            <guid>https://velog.io/@swimming_ram/%EB%A9%94%EC%84%9C%EB%93%9C-StringBuilder</guid>
            <pubDate>Sun, 13 Jul 2025 13:34:36 GMT</pubDate>
            <description><![CDATA[<h3 id="stringbuilder란">StringBuilder란?</h3>
<ul>
<li>java.lang 패키지에 포함된 문자열을 효율적으로 처리하는 클래스</li>
<li>문자열을 수정가능하게 만들어 기존 문자열(String)보다 빠르고 유연하게 처리가 가능함.</li>
<li>보통 문자열 덧붙이기, 삭제, 뒤집기, 삽입등에 사용</li>
</ul>
<h3 id="stringbuilder를-사용하는-이유">StringBuilder를 사용하는 이유</h3>
<table>
<thead>
<tr>
<th><strong>항목</strong></th>
<th>String <strong>(불변)</strong></th>
<th>StringBuilder <strong>(가변)</strong></th>
</tr>
</thead>
<tbody><tr>
<td>특성</td>
<td>문자열이 불변(immutable)</td>
<td>문자열이 가변(mutable)</td>
</tr>
<tr>
<td>변경 방식</td>
<td>변경 시 새로운 객체 생성</td>
<td>내부 버퍼를 직접 수정</td>
</tr>
<tr>
<td>성능</td>
<td>문자열 연산 많을수록 느림</td>
<td>빠름</td>
</tr>
<tr>
<td>사용 상황</td>
<td>간단한 문자열, 상수 처리 등</td>
<td>반복적인 수정/조작이 필요한 경우</td>
</tr>
</tbody></table>
<h3 id="주요-생성자">주요 생성자</h3>
<table>
<thead>
<tr>
<th><strong>생성자</strong></th>
<th><strong>설명</strong></th>
</tr>
</thead>
<tbody><tr>
<td>new StringBuilder()</td>
<td>빈 버퍼 생성</td>
</tr>
<tr>
<td>new StringBuilder(String str)</td>
<td>초기 문자열 설정</td>
</tr>
</tbody></table>
<h3 id="stringbulder-주요-메서드">StringBulder 주요 메서드</h3>
<table>
<thead>
<tr>
<th><strong>메서드</strong></th>
<th><strong>설명</strong></th>
<th><strong>예시</strong></th>
</tr>
</thead>
<tbody><tr>
<td>append(String s)</td>
<td>문자열 추가</td>
<td>sb.append(&quot;abc&quot;);</td>
</tr>
<tr>
<td>insert(int offset, String s)</td>
<td>특정 위치에 삽입</td>
<td>sb.insert(1, &quot;X&quot;);</td>
</tr>
<tr>
<td>delete(int start, int end)</td>
<td>구간 삭제</td>
<td>sb.delete(1, 3);</td>
</tr>
<tr>
<td>reverse()</td>
<td>문자열 뒤집기</td>
<td>sb.reverse();</td>
</tr>
<tr>
<td>toString()</td>
<td>문자열로 반환</td>
<td>String str = sb.toString();</td>
</tr>
<tr>
<td>setCharAt(int index, char ch)</td>
<td>특정 인덱스 문자 수정</td>
<td>sb.setCharAt(2, &#39;Z&#39;);</td>
</tr>
<tr>
<td>length()</td>
<td>현재 길이 반환</td>
<td>sb.length();</td>
</tr>
<tr>
<td>charAt(int index)</td>
<td>문자 하나 조회</td>
<td>sb.charAt(0);</td>
</tr>
</tbody></table>
<h3 id="1-append---문자열-추가">1. append - 문자열 추가</h3>
<pre><code class="language-java">public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(&quot;hello&quot;);

        sb.append(&quot; world&quot;);             // hello world
    }
}</code></pre>
<h3 id="2-insert---특정-위치에-삽입">2. insert - 특정 위치에 삽입</h3>
<pre><code class="language-java">public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(&quot;hello&quot;);

        sb.append(&quot; world&quot;);             // hello world
        sb.insert(0, &quot;Say &quot;);            // Say hello world
    }
}</code></pre>
<h3 id="3-setcharat---특정-인덱스-문자-수정">3. setCharAt - 특정 인덱스 문자 수정</h3>
<pre><code class="language-java">public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(&quot;hello&quot;);

        sb.append(&quot; world&quot;);             // hello world
        sb.insert(0, &quot;Say &quot;);            // Say hello world
        sb.setCharAt(4, &#39;H&#39;);            // Say Hello world

    }
}</code></pre>
<h3 id="4-delete----구간-삭제">4. delete -  구간 삭제</h3>
<pre><code class="language-java">public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(&quot;hello&quot;);

        sb.append(&quot; world&quot;);             // hello world
        sb.insert(0, &quot;Say &quot;);            // Say hello world
        sb.setCharAt(4, &#39;H&#39;);            // Say Hello world
        sb.delete(0, 4);                 // Hello world
    }
}</code></pre>
<h3 id="5-reverse">5. reverse()</h3>
<pre><code class="language-java">public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder(&quot;hello&quot;);

        sb.append(&quot; world&quot;);             // hello world
        sb.insert(0, &quot;Say &quot;);            // Say hello world
        sb.setCharAt(4, &#39;H&#39;);            // Say Hello world
        sb.delete(0, 4);                 // Hello world
        sb.reverse();                    // dlrow olleH
    }
}</code></pre>
<p>StringBuilder 메서드를 이용하면 방금 풀었던 BOJ_10988_팰린드롬인지확인하기 문제도 쉽게 풀 수 있다.</p>
<pre><code class="language-java">BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String reversed = new StringBuilder(str).reverse().toString();

if (str.equals(reversed)) {
    System.out.println(&quot;1&quot;);
} else {
    System.out.println(&quot;0&quot;);
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_10988_팰린드롬인지 확인하기]]></title>
            <link>https://velog.io/@swimming_ram/BOJ10988%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%9D%B8%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@swimming_ram/BOJ10988%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%9D%B8%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 13 Jul 2025 13:20:33 GMT</pubDate>
            <description><![CDATA[<p>단순히 앞에서 읽던 뒤에서 읽던 같은 단어가 완성되면 팰린드롬이라고 하는데 그 여부를 판단하는 문제</p>
<p>파이썬이라면 Reverse로 딸각 해결이 되지만 자바로는 역시가 처음보는 기술들이 많이 보인다.</p>
<pre><code>package 문자열;

import java.io.*;
import java.lang.*;

public class BOJ_10988_팰린드롬인지확인하기  {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String words = br.readLine();
        //String [] word_list (x) = br.readLine(&quot; &quot;); 같은 형식이어야 함

        StringBuffer words_2 = new StringBuffer(words);
        String reverse_words = words_2.reverse().toString();

        if (words.equals(reverse_words)) {
            System.out.println(&quot;1&quot;);
        } else {
            System.out.println(&quot;0&quot;);
        }
    }
}</code></pre><ol>
<li><em>*import java.lang.</em> **   리버스 함수를 이용하려면 꼭 필요한 부분</li>
<li><strong>StringBuffer</strong> : 이 글을 작성한 후 따로 공부해서 올리겠지만 리버스하기 위해서 넣어줘야 하는 과정인것 같다.</li>
<li><strong>words.equals(reverse_words)</strong> 부분에서 처음에는<pre><code>if (words_2.equals(reverse_words)) {</code></pre>이렇게 작성했었다. 오류가 발생하였는데,이유는
words_2 는 StringBuffer 객체이고
reverse_words는 String 객체이기 때문이다.</li>
</ol>
<p><strong>equals()함수는 객체 타입까지 비교</strong>하기때문에 이 경우에는 팰린드롬이여도 무조건 false가 출력이 되기때문에 주의해야 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_15894_수학은체육과목입니다.]]></title>
            <link>https://velog.io/@swimming_ram/BOJ15894%EC%88%98%ED%95%99%EC%9D%80%EC%B2%B4%EC%9C%A1%EA%B3%BC%EB%AA%A9%EC%9E%85%EB%8B%88%EB%8B%A4</link>
            <guid>https://velog.io/@swimming_ram/BOJ15894%EC%88%98%ED%95%99%EC%9D%80%EC%B2%B4%EC%9C%A1%EA%B3%BC%EB%AA%A9%EC%9E%85%EB%8B%88%EB%8B%A4</guid>
            <pubDate>Sun, 13 Jul 2025 12:50:29 GMT</pubDate>
            <description><![CDATA[<p>간단한 수학 문제인줄 알았는데 아니 간단하긴 하다 생각못한 부분이 있어서 몇번 실패가 떠서 그렇지 ..</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/a4bcbccc-6425-4602-a0cc-314528883368/image.jpeg" alt=""></p>
<pre><code>package 구현;

import java.io.*;

public class BOJ_15894_수학은체육과목입니다 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int input_num = Integer.parseInt(br.readLine());
        System.out.println(4 * input_num);


    }
}
</code></pre><p>처음 작성한 코드이다 문제가 없는데 계속 실패가뜬다 ..
<img src="https://velog.velcdn.com/images/swimming_ram/post/8c6f0067-1195-4ea8-b985-68ca180261a4/image.png" alt=""></p>
<p>뭐가 문제일까 했는데 혹시 범위가 잘못되었나 생각해서 문제에 체력이 넘쳐서 끝까지 한다고 써져있었기 때문에 ㅎㅎ..</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/ecc13eea-b74f-493a-8c3a-a392a6f7fa21/image.png" alt=""></p>
<p>10의 9승이면 10억인데 인트의 범위는
<strong>-21억 ~ 21억</strong> 정도이다 N이 10억이라고하면 4N은 40억이 되버리니 초과이다 </p>
<pre><code>package 구현;
import java.io.*;

public class BOJ_15894_수학은체육과목입니다 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        long input_num = Long.parseLong(br.readLine());
        System.out.println(4 * input_num);
    }
}</code></pre><p>Long형으로 바꿔주니 Pass</p>
<ol>
<li>실패가 뜬다면 문제의 범위를 잘 보고 자료형을 바꿔주자</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_2490_윷놀이]]></title>
            <link>https://velog.io/@swimming_ram/BOJ2490%EC%9C%B7%EB%86%80%EC%9D%B4-gn9usoz0</link>
            <guid>https://velog.io/@swimming_ram/BOJ2490%EC%9C%B7%EB%86%80%EC%9D%B4-gn9usoz0</guid>
            <pubDate>Sun, 13 Jul 2025 12:31:53 GMT</pubDate>
            <description><![CDATA[<pre><code>package 구현;

import java.io.*;

public class BOJ_2490_윷놀이 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for (int i = 0; i &lt; 3; i++) {
            String[] num_list = br.readLine().split(&quot; &quot;);
            int front_count = 0;

            for (int j = 0; j &lt; 4; j++) {
                if (num_list[j].equals(&quot;1&quot;)) {
                    front_count += 1;
                    //if (num_list[j] == &quot;1&quot;) 아님 주의!
                }
            }

            if (front_count == 0) {
                System.out.println(&quot;D&quot;);
            } else if (front_count == 1) {
                System.out.println(&quot;C&quot;);
            } else if (front_count == 2) {
                System.out.println(&quot;B&quot;);
            } else if (front_count == 3) {
                System.out.println(&quot;A&quot;);
            } else if (front_count == 4) {
                System.out.println(&quot;E&quot;);
            }
        }
    }
}</code></pre><ol>
<li>파이썬마냥  String에서 &quot;==&quot; 사용하면 안됨
자바에서는 <strong>&quot;변수.equals(&quot;문자열&quot;)&quot;</strong> 사용할 것</li>
<li>복사 붙이기 할때 (코드재사용) 괄호 잘 파악하기</li>
<li>위 문제의 경우에는 스위치 케이스문 사용도 좋을 듯</li>
<li>문제를 한번 어떻게 풀지 생각하기 (앞면 또는 뒷면만 고려하면 자동으로 다른 면은 생각안해도되는데 2개다 선언해놓고 쓸대없이 코드가 길어졌음) 지금은 브론즈 문제라 금방 해결 했지만 나중에는 풀 수 있는 시간 차이가 클 듯.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ_10818_최소, 최대]]></title>
            <link>https://velog.io/@swimming_ram/BOJ10818%EC%B5%9C%EC%86%8C-%EC%B5%9C%EB%8C%80</link>
            <guid>https://velog.io/@swimming_ram/BOJ10818%EC%B5%9C%EC%86%8C-%EC%B5%9C%EB%8C%80</guid>
            <pubDate>Sun, 13 Jul 2025 11:45:14 GMT</pubDate>
            <description><![CDATA[<pre><code>package 구현;

import java.io.*;
import java.nio.Buffer;
import java.util.*;
import java.io.IOException;

public class BOJ_10818_최소최대 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int testcase_num = Integer.parseInt(br.readLine());

        int max_num = Integer.MIN_VALUE;
        int min_num = Integer.MAX_VALUE;

        String[] nums = br.readLine().split(&quot; &quot;);
        for (int i = 0; i &lt; testcase_num; i++) {
            int num = Integer.parseInt(nums[i]);
            if (num &gt; max_num) {
                max_num = num;
            }
            if (num &lt; min_num) {
                min_num = num;
            }
        }

        System.out.println(min_num + &quot; &quot; + max_num);


    }
}
</code></pre><p>단순한 구현 문제 문제에서 얻어갈 수 있었던 건</p>
<ol>
<li><strong>BufferedReader</strong>의 사용법</li>
<li>입력시 <strong>IOException</strong> 을 사용하면 psvm 뒤에 <strong>throws IOException</strong>을 추가해줘야 한다는것.</li>
<li>최대, 최솟값을 초기화 할때 &quot;<strong>Integer.MIN_VALUE&quot;, &quot;Integer.MAX_VALUE</strong>&quot; 를 사용하면 인트형에서 최소, 최대값으로 초기화 해놓을수 있다는 것.</li>
<li>BufferedReader를 사용할때 지금까지 두줄로 인트형으로 변환했지만 한번에 변환 할 수 있다는것.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Java_클래스, 객체]]></title>
            <link>https://velog.io/@swimming_ram/Java%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4</link>
            <guid>https://velog.io/@swimming_ram/Java%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4</guid>
            <pubDate>Sun, 13 Jul 2025 08:07:22 GMT</pubDate>
            <description><![CDATA[<h3 id="자바는-클래스와-객체로-이루어져-있다">자바는 클래스와 객체로 이루어져 있다.</h3>
<p>클래스에 정의한 변수들을 <strong>멤버변수 == 필드</strong>라고 한다.</p>
<p><strong>클래스 - 설계도</strong></p>
<pre><code>public class Student {
    //학생 클래스를 정의

//멤버 변수 선언
    String name;
    int age;
    int grade;
}</code></pre><p>멤버변수 : 특정 클래스에 소속된 변수
위 코드에서는 &quot;name, age, grade&quot;에 해당함</p>
<p>필드 : 데이터 항목을 가르키는 용어</p>
<p>클래스 (설계도)를 이용하여 메모리에 만들어진것 - 객체, 인스턴스</p>
<pre><code>public class ClassStart_3 {
    public static void main(String[] args) {
        Student student_1;
        student_1 = new Student();
        student_1.name = &quot;학생1&quot;;
        student_1.age = 15;
        student_1.grade = 90;

        Student student_2;
        student_2 = new Student();
        student_2.name = &quot;학생2&quot;;
        student_2.age = 16;
        student_2.grade = 80;

        System.out.println(student_1);
        System.out.println(student_2);

        System.out.println(&quot;이름 : &quot; + student_1.name + &quot; 나이 : &quot; + student_1.age + &quot; 성적 : &quot; + student_1.grade);
        System.out.println(&quot;이름 : &quot; + student_2.name + &quot; 나이 : &quot; + student_2.age + &quot; 성적 : &quot; + student_2.grade);



    }


}</code></pre><h3 id="구조">구조</h3>
<p>new Student를 통해 Student클래스에 있는 정보 만큼의 메모리를 확보하여 생성함.</p>
<p>참조값을 보관함 (주소)를 반환함</p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/2e313ace-f879-4eae-8114-39ef9ad22c5b/image.jpeg" alt=""></p>
<p>클래스 - 객체의 대략적인 구조
<img src="https://velog.velcdn.com/images/swimming_ram/post/ea0a4f0e-49da-4c24-aee7-be80048bcec4/image.png" alt=""></p>
<p>필기에는 1번지, 2번지라고 이해하기 쉽게 표현했지만 실제로는 문자+숫자로 이루어진 값에 저장되는 듯 하다.</p>
<p>객체를 사용하기 위해서는 객체에 접근을 해야함 이떄 “ . “ 을 사용하여 접근</p>
<pre><code>student_1.name = &quot;학생1&quot;


//student_1
//주소값 -&gt; &quot;1번지&quot;
//name = &quot;학생1&quot;
//age = 15;
//grade = 90;

student_1.name = &quot;학생1&quot;

//1번지의(stduent_1의 주소값) &quot;name&quot; 멤버변수에 &quot;학생1&quot;을 대입시켜라
</code></pre><p>위 경우에는 변수 “student_1”에 있는 주소값(참조값)을 읽어와 메모리에 존재하는 객체에 접근한다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[SSAFY 1주차 회고]]></title>
            <link>https://velog.io/@swimming_ram/SSAFY-1%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@swimming_ram/SSAFY-1%EC%A3%BC%EC%B0%A8-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Sun, 13 Jul 2025 06:30:25 GMT</pubDate>
            <description><![CDATA[<h3 id="ssafy-1주차-회고">SSAFY 1주차 회고</h3>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/b1d2a560-1827-4fec-b04d-821ac43be0fb/image.png" alt=""></p>
<p>2번의 도전 끝에 싸피 14기에 합격하여 교육받을 기회를 얻을 수 있었습니다. </p>
<p>저는 대전캠퍼스에서 1년간 교육받을 예정입니다.
<img src="https://velog.velcdn.com/images/swimming_ram/post/edf1496a-634d-4cba-bb5d-07da8d619334/image.JPG" alt=""></p>
<p>첫주부터 여러 활동을 하면서 주변 분들과 많은 얘기를 할 수 있어 좋은 경험이었습니다. </p>
<p><img src="https://velog.velcdn.com/images/swimming_ram/post/b803fd2f-49af-4177-955b-9e64ca33235c/image.JPG" alt=""></p>
<p>다행히 같은 줄에 앉으신 분들이 모두 좋은 분들이라 먼저 다가와 주셔서 심심하지 않게 한주를 보낸거 같습니다.</p>
<p>확실히 취업을 목표로 하시는 분들이 모여계시는 교육과정이라 모두 저보다 실력이 좋으신 분들만 모여있는 느낌이라 위기의식과 목표의식이 동시에 생기는것 같습니다.</p>
<p>확실히 현재는 다른 동기님들보다 실력이 뒤떨어져 있지만 끝날때는 한사람 분의 몫을 할 수 있게 되었으면 좋겠습니다!!</p>
]]></description>
        </item>
    </channel>
</rss>