<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>seoyeon_.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 22 Jun 2023 08:02:18 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>seoyeon_.log</title>
            <url>https://velog.velcdn.com/images/seoyeon_/profile/04700964-fbcd-4bb4-adf5-5804c475f244/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. seoyeon_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/seoyeon_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Programmers_호텔대실]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%ED%98%B8%ED%85%94%EB%8C%80%EC%8B%A4</link>
            <guid>https://velog.io/@seoyeon_/Programmers%ED%98%B8%ED%85%94%EB%8C%80%EC%8B%A4</guid>
            <pubDate>Thu, 22 Jun 2023 08:02:18 GMT</pubDate>
            <description><![CDATA[<p>Question
호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 
한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.
예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때,
코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.</p>
<p>Answer Code</p>
<pre><code>public class rentHotel {
    public int solution(String[][] book_time) {

        int max = Integer.MIN_VALUE;
        int [] check = new int [1440];
        int answer;
        for (int i = 0; i &lt; book_time.length; i++) {
        // 입실 시간을 분으로 변경
            String startStr = book_time[i][0];
            String startSplit [] = startStr.split(&quot;:&quot;);
            int startHour = Integer.parseInt(startSplit[0])*60;
            int startMin = Integer.parseInt(startSplit[1]);
            int startTime = startHour+startMin;

        // 퇴실 시간을 분으로 변경
            String endStr = book_time[i][1];
            String endSplit [] = endStr.split(&quot;:&quot;);
            int endHour = Integer.parseInt(endSplit[0])*60;
            int endMin = Integer.parseInt(endSplit[1]);
            int endTime = endHour+endMin+10;

        //12시가 넘어서 퇴실하는 사람은 모두 12시까지만 있는 것으로 구현
            if (endTime &gt;= 1440){
                endTime = 1440;
            }

        // 입실 부터 퇴실까지 1개의 방을 차지한다고 생각하고, 1씩 증가
            for (int j = startTime; j &lt;endTime ; j++) {
                check[j] +=1;

        // 필요한 방의 갯수 return
                max = Math.max(max, check[j]);
            }
        }
        answer = max;
        return answer;
    }
}
</code></pre><br>
저 Max를 이렇게 구해야 된다는 생각을 아예 하지 못했다
우선순위 큐를 이용해야 겠다고 생각이 들어서 1차로 시도하였고 큐에 넣긴 했으나
요거 peek이랑 어떻게 비교를 해야할지 감이 잡히지 않아서
다른 분들의 코드를 구글링 했고, 시간이 0분에서 1440분까지 한정되어 있어서
해당 크기에 맞는 배열을 만들어 접근하였다.

<p>check 배열을 쓰는게 익숙치가 않았지만 방법을 알고 나니까 구현자체는 오래 걸리지 않았다</p>
<p>생각의 전환. 다른 사람들의 코드를 보는 것이 왜 중요한지 또다시 뼈저리게 깨닫는다..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BackJoon_1254]]></title>
            <link>https://velog.io/@seoyeon_/BackJoon1254</link>
            <guid>https://velog.io/@seoyeon_/BackJoon1254</guid>
            <pubDate>Mon, 01 May 2023 03:58:07 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorred-백준-1254-문제">⭐ <span style="color:red"> 백준 1254 문제</h4>
<p>**  [1차시도]**</p>
<pre><code>public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String S = br.readLine();
        Deque&lt;String&gt; deque = new ArrayDeque&lt;String&gt;();
        int cnt = S.length();

        for (String s : S.split(&quot;&quot;)) {
            deque.addLast(s);
        }

        while (!deque.isEmpty()){

            if (!deque.peekFirst().equals(deque.peekLast())){
                deque.addLast(deque.peekFirst());
                cnt++;
                System.out.println(deque);

            } else if (deque.peekFirst().equals(deque.peekLast())){
                deque.pollFirst();
                deque.pollLast();
                System.out.println(deque);
            }
        }
        System.out.println(cnt);
    }
}
</code></pre><p>  예제는 모두 맞았는데 오류가 나서 다른 반례를 찾아보니
  &#39;aabca&#39; 실제 답은 &#39;aabcacbaa&#39;로 9가 나와야 하지만
  코드 상 첫번째 a와 마지막 a가 소거되어 답이 7이 나왔다
  <br></p>
<p>  열심히 만든 코드인데 다른 점을 잘 못찾겠어서 다른 분들의 해설을 좀 참고해 보니, 
  deque를 사용하지 않고 그냥 문자열 안에서 palindrome이 가능한 부분을 제외하고 아닌 부분을 더해주는 방법으로 푸셨길래 따라해 보았다!
  <br>
**  [2차시도]**</p>
<pre><code>public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String S = br.readLine();
        int cnt = S.length();

        for (int i = 0; i &lt; S.length(); i++) {
            if (isPalindrome(S.substring(i))){
                break;
            }
            cnt++;
        }
        System.out.println(cnt);
    }

    public static boolean isPalindrome (String S){
        int start = 0 ;
        int end = S.length()-1;
        while (start &lt;= end){
            if (S.charAt(start) != S.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
}</code></pre><p>   ** 👍 <span style="color:pink">내생각</sapn>**
  구글링이 가능한 것에 감사하며,,</p>
<p>  ① isPalindrome이라는 함수를 만들어서 맨 뒤와 맨 앞의 글자가 같은지 체크해줌
  ② 주어진 글자수를 substring하면서 팰린드롬이 맞는 부분을 찾는다.
  ③ 팰린드롬이 아니면 정답으로 출력될 cnt에 1씩 더해준다. 
  (즉 팰린드롬이 되려면 뒤에 다른 글자가 하나 붙어야 된다는 의미)
  ④ 기존 cnt값은 주어진 문자열의 길이로 설정해준다.
   <br>
  <strong>🤔<span style="color:pink">배운내용</strong>
팰린드롬이라는 단어를 보자마자 무슨 파블로프의 개처럼 deque를 떠올리지 말자..
문제를 보다 쉽게 풀 수 있는 방법이 있을지 많이 고민하자
(때로는 쉬운 방법으로 풀 수 있다)</p>
<p>사실 지금 푼 코드가 생각을 못해낼 정도는 아니였는데, 생각의 틀에 갇혀버린거 같다
아직은 시간에 촉박해 하지 말고, 문제를 열심히 푸는 걸로!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[어떤 백엔드 개발자가 되고 싶은지]]></title>
            <link>https://velog.io/@seoyeon_/%EC%96%B4%EB%96%A4-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9D%80%EC%A7%80</link>
            <guid>https://velog.io/@seoyeon_/%EC%96%B4%EB%96%A4-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9D%80%EC%A7%80</guid>
            <pubDate>Thu, 27 Apr 2023 12:35:16 GMT</pubDate>
            <description><![CDATA[<p>어떤 백엔드 개발자가 되고 싶은지,,
주제를 받고 고민이 많았다.
<img src="https://velog.velcdn.com/images/seoyeon_/post/ddae3c7a-94b5-4dec-8775-e04e710a495b/image.gif" alt=""></p>
<p>생각보다 빠르게 진행되었던 퇴사와 백엔드스쿨 수강에 지레 겁먹었던 나는 3주만에 입문 문제까지는 풀 수 있는 사람이 되었다.</p>
<p>6개월 후에는 어떤 백엔드 개발자가 되어 있을지,
회사에서 1인분을 하는 개발자가 될 수 있을지 아직도 의심은 많다.
<img src="https://velog.velcdn.com/images/seoyeon_/post/5c6d5fde-d0ce-4c82-bca0-eafea067d1e0/image.gif" alt=""></p>
<p>나는 개발자가 갖게 되는 기술을 서비스가 잘 굴러갈 수 있도록 사용하는 개발자가 되고 싶다.
(어떻게 보면 당연하지만, 이게 참 달성하기 어려운 목표더라)</p>
<p>서비스 장애가 생겼을 때 장애를 빠르게 캐치하고 수정할 수 있는, 후단까지 책임질 수 있는 개발자가 되고 싶다.</p>
<p>사실 자바 코드만 작성하고 있는 지금으로서는 어떤 개발자가 되어야 할지 감이 잘 안온다.</p>
<p>개발을 통해서 서비스의 발전을 도모하고, 그리고 각종 아이디어들을 실제로 구현할 수 있는 개발자가 되고 싶다.</p>
<p>운영팀에서 일을 하면서 느꼈던 점은, 아무리 좋은 아이디어가 있어도 서비스로 출시되기 위해서는 개발자의 도움이 필요하다는 것이었다. </p>
<p>그동안 생각했던 좋은 아이디어들이 번번히 구현되지 못하였는데, 개발을 배우면서 그런 부분을 실현할 수 있는 사람이 되고, 또 나와 같은 어려움을 겪고 있는 팀원들을 도와주고 싶다.</p>
<p>서비스를 실제로 구현해내고 로직을 짜는 것은 개발자만이 가진 힘이라고 생각한다. 언젠가는 회사에서 찾는 인재, 일당백을 할 수 있는 코드를 작성할 줄 아는 개발자가 되고 싶다.</p>
<p>(너무 추상적인가.. 2개월 후에 다시 적기로!)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백엔드 개발자가 되고 싶은 이유 ]]></title>
            <link>https://velog.io/@seoyeon_/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9D%80-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@seoyeon_/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9D%80-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Thu, 20 Apr 2023 11:41:57 GMT</pubDate>
            <description><![CDATA[<p>IT기업 커머스운영팀에서 1년 넘게 근무하면서, 
개발자가 되어야 겠다는 꿈을 키웠다.</p>
<p>내가 담당했던 일은, 판매 파트너사들의 판매 활동을 지원해주는 역할 및 운영사 관리 역할이였다.</p>
<p>회사는 설립된 지 8년차였지만 어드민, DB 등 모든 부분에서 부족했다.</p>
<p>운영팀원으로서 개발을 요청한 적도 매우 많았지만
번번히 &#39;리소스 부족&#39;이라는 사유로 거절당했었다 
(그 놈의 리소스.. 내가 사오고 싶었다)</p>
<p>당장 몇 주면 개발될 수 있는 부분이 매번 중요순위에서 밀려,
월 1000만원씩 운영사에게 투자되고 있는 상황이 나로서는 이해되지 않았다.</p>
<p>한 번은 파트너사 향 공지사항 페이지 API를 만들어야 하는 상황이 있었는데, &quot;리소스 부족&quot;이라는 사유로 분기마다 밀렸었다. 그래서 공지사항의 내용을 번번히 메일링 했었다. 이런.. 내가 모르는 부분에 대해서 무력감을 느꼈었다.
(나중에 정말 할 수만 있다면 전회사 공지사항 API는 내가 만들어 주고 싶다 가슴 속의 한으로 남은거 같다)
<img src="https://velog.velcdn.com/images/seoyeon_/post/45fc7532-57a7-4526-9017-67baf9ac0c69/image.gif" alt=""></p>
<p>갈수록 답답함을 조금씩 느꼈고, 10명 아니, 그 이상의 인력이 투입되어 수동으로 해야 하는 일이 <strong>개발자의 몇 주 투자로 자동화 될 수 있다</strong>는 점에 매력을 느꼈다.</p>
<p>입사 당시만 해도 SQL,JAVA는 커녕 엑셀도 잘 할줄 몰랐던 내가 1년만에 독학으로 직접 쿼리를 만들고, JAVA도 공부하고 있다는게 새삼 놀랍다.</p>
<p>난 중국어를 전공했다. 개발자랑은 거리가 참 멀다.
그럼에도 해내고 싶어 꾸준히 노력 중이다.</p>
<p>3주간 JAVA를 접하면서 느낀 점은, 내가 공부한 만큼 실력이 는다는 것이다. 또 정해진 공부양이 없다는 점, 정해진 답이 없다는 점에서 기존 해왔던 공부랑은 다르다. 그래서 코드를 직접 짜다 보면 시간 가는 줄도 모른다.</p>
<p>일각에서는 개발자 공부가, 수학문제를 푸는 것과 비슷하다고 한다. 놀랍게도 난 이런 공부에 특화되어 있다. 고등학교 시절얘기를 꺼내기엔 웃기지만, 수학 공부를 정말 좋아해서 수능에서 만점을 받을 정도로 열심히 팠었다.</p>
<p>문제가 주어지고 오롯이 나의 생각으로만 문제를 &quot;풀어낸다&quot;는 점에서 성취감이 온다. 여타 언어 공부가 주는 쾌감과는 다른 행복감이다. 요근래 코드를 고치고, 직접 작성하면서 성취감을많이 느낀다. 덕분에 보람찬 하루들이 쌓여가고 있다.</p>
<p>물론 첫 3개월은 많이 힘들거 같다. 지금도 사실 코딩테스트 반타작 하고 기분이 오락가락 한다.
<img src="https://velog.velcdn.com/images/seoyeon_/post/455c021b-687a-4b60-ab79-22fd04ac226f/image.gif" alt=""></p>
<h4 id="나의-무지를-무서워말라">&quot;나의 무지를 무서워말라&quot;</h4>
<p>처음 백엔드스쿨을 개강했을 때만 해도,
다른 분들과 나를 비교하고는 했다. 
다른 데서 공부하셨던 분들과 나를 비교하는 멍청한 짓이 반복되었고 내 기분, 내 공부에도 영향을 많이 미쳤다.</p>
<p>그러다, &#39;아, 내가 개발까지 할 줄 안다면, 난 이 분야마저도 유능한 인간이구나&#39; 라는 생각이 뇌리에 스치더라.</p>
<p>이제 나는 중국어, 영어, 커뮤니케이션 스킬, Project Manager, 요리, 운동 그리고 개!발! 까지 할 수 있는 멋진 인재가 되는거다.</p>
<p>시간이 가는 것을 두려워 말라.
나의 무지를 유능으로 바꾸는 것을 즐기자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Heap개념 노트 정리]]></title>
            <link>https://velog.io/@seoyeon_/Heap%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/Heap%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 17 Apr 2023 13:55:00 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/895c11b9-fe40-441d-90e5-d94d85807c6a/image.jpg" alt=""></p>
<p>Heap 개념 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BackJoon_2830]]></title>
            <link>https://velog.io/@seoyeon_/BackJoon2830</link>
            <guid>https://velog.io/@seoyeon_/BackJoon2830</guid>
            <pubDate>Mon, 17 Apr 2023 13:54:02 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorred-백준-2830-문제">⭐ <span style="color:red"> 백준 2830 문제</h4>
<pre><code>import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        ArrayList arr = new ArrayList();

        int result = 0;

        for (int i = 0; i &lt; n; i++) {
            int A = Integer.parseInt(br.readLine());
            arr.add(A);
        } 
// 각 입력값을 ArrayList에 저장함

        for (int i = 0; i &lt; arr.size(); i++) {
            for (int j = i + 1; j &lt; arr.size(); j++) {
                result += Integer.parseInt(String.valueOf(arr.get(i))) ^ Integer.parseInt(String.valueOf(arr.get(j)));
            }
        }
// for문을 2번 돌면서 2진법 XOR연산자로 비교해주고 result에 해당 값을 더해준다.
        System.out.println(result);
    }
}</code></pre><pre><code>                                           &lt;br&gt;&lt;br&gt;</code></pre><p>  ** 👍 <span style="color:pink">내생각</sapn>**
  2진법 관련된 문제를 풀어본 적이 없어서 감이 안잡혔다
  요 문제 풀 때 가장 헤맨 부분은
  ① 10진법 숫자를 어떻게 2진법으로 나눠줘야 하나 고민했다 toBinary 명령어에 대해서 무지했다.
  ② XOR 연산자 (^)를 쓰기 위해서는 10진법 숫자를 2진법으로 바꿔줘야 되는 줄 알았다. 
  이 과정에서 int, Integer, String 사이에서 형변환 해주느냐고 아주 진땀을 뺐다
  ③ 예제 문제까지는 다 원하는 값이 출력되는 코드를 짰지만 시간초과가 생겼다.</p>
<pre><code>  &lt;br&gt;&lt;br&gt;</code></pre><p><strong>🤔<span style="color:pink">배운내용</strong></p>
<ol>
<li>시간초과 ( 시간복잡도는 코드의 생명이란다 ) 난 아직 이거까지는 모르겠고,, 다른 방법은 더 생각해봐야겠다</li>
<li>10진법 -&gt; 2진법 은 toBinary 명령어 사용</li>
<li>2진법 -&gt; 10진법 은 Integer.parseInt(숫자, 2진법)</li>
<li>bufferedReader 사용법</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[BackJoon_10807]]></title>
            <link>https://velog.io/@seoyeon_/BackJoon10807</link>
            <guid>https://velog.io/@seoyeon_/BackJoon10807</guid>
            <pubDate>Mon, 17 Apr 2023 13:38:34 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorred-백준-10807">⭐ <span style="color:red"> 백준 10807</h4>
<pre><code>import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
// 입력 배열의 size를 정해준다.


        StringTokenizer st = new StringTokenizer(br.readLine());
// 입력된 배열의 값을 나눠서 저장한다 (split이랑 비슷한 개념)

        int V = Integer.parseInt(br.readLine());
        int cnt = 0;
        int arr[] = new int [N];


        for (int i = 0; i &lt; N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

//각 입력값을 arr 배열에 넣어준다.

        for (int i = 0; i &lt; N; i++) {
            if (arr[i] == V) {
                cnt++;
            }
        }
  // 배열의 i번째 값이 V랑 같으면 cnt증가

        System.out.println(cnt);
    }
}</code></pre><p>   <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**
  어제 쪼까 헤맨 문제가 있었는데, 나중에는 scanner함수보다 bufferedReader을 더 많이 쓴다고 한다 (시간초과 때문이라고..)
  그래서 나중에 가서 헤매기 보다 빨리 익숙해져야겠다 싶어서 오늘 부지런히 공부해보았다! 생각보다 쉬운 개념이어서 요리조리 따라해보니 괜찮았던거 같다.</p>
<p>  일단 HashTable을 사용하라고 해서, 각 값을 ht.key와 value에 맞춰서 add하는것 까지는 해냈는데, 도저히 ht.key값에 따라 value에 접근하는 걸 못하겠더라..</p>
<p>  어디 구글에서는 foreach문을 사용하라던데 난 아직 그 개념이 조금 어려웠다. 처음에는 ht.key가 i번째일 때 ht.containsValue가 V이면 cnt ++ 로 구현하려고 했는데 저 &quot;ht.key가 i번째&quot; 이 부분 구현이 불가했다.</p>
<p>  1시간 조금 넘게 알아보다가 우선은 그래도 자신있는 배열과 ArrayList 로 고민해보자 싶어서 배열로 시도하였고 성공!
      <br><br>
<strong>🤔<span style="color:pink">배운내용</strong></p>
<ol>
<li>bufferedReader 사용방법</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[BackJoon_9012]]></title>
            <link>https://velog.io/@seoyeon_/BackJoon9012</link>
            <guid>https://velog.io/@seoyeon_/BackJoon9012</guid>
            <pubDate>Mon, 17 Apr 2023 13:30:36 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorred-백준-9012-문제">⭐ <span style="color:red"> 백준 9012 문제</h4>
<pre><code>import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        String s=scanner.nextLine();
        for(int i=0;i&lt;n;i++) {
            String str=&quot;&quot;;
            str=scanner.nextLine();

// 해당 부분을 놓쳐서 n개의 괄호모음이 나와야 된다는 부분을 간과했었다. for문으로 전체 코드를 반복해주는 걸로 해결완료!


            boolean isVps = false;
            boolean isContinue = false;
// 다른 분들 코드보니까 isVps = false로 if문에서 끝나던데 난 안 끝나서 아예 boolean을 하나 더 추가해두었다. if문 안에서 비교하기 위해서!


            String arr[] = str.split(&quot;&quot;);
            Stack&lt;String&gt; stack = new Stack&lt;&gt;();

            for (int j = 0; j &lt; arr.length; j++) {
                if (arr[j].equals(&quot;(&quot;)) {
                    stack.push(&quot;(&quot;);
                    isContinue = true;

// 입력된 값을 arr 배열에 넣고 그값이 ( &lt;- 여는 괄호라면 stack에 넣는다. )


                } else if (arr[j].equals(&quot;)&quot;) &amp;&amp; !stack.isEmpty()) {      
                    stack.pop();
  // stack이 비어있지 않고, arr이 ) &lt;- 닫는 괄호라면 stack 값을 뺀다 (pop)

                    isContinue = true;
                } else if (arr[j].equals(&quot;)&quot;) &amp;&amp; stack.isEmpty()) {
                    isContinue = false;
                    break;
// stack에 아무 값도 없이 ) &lt;- 닫는 괄호만나왔을 때는 볼 것도 없이 false라는 부분을 isVps로 조건을 추가해주려고 했는데 위에 조건이랑 자꾸 충돌해서 그런지,, 적용이 안되더라!  그래서 다른 boolean값 넣어주기


                }
            }
            if (stack.isEmpty() &amp;&amp; isContinue == true) {
                isVps = true;
            } else if (isContinue == false) {
                isVps = false;
            }
//위에서 정해준 다른 boolean값으로 isVps 정의해주고, 


            System.out.println(isVps ? &quot;YES&quot; : &quot;NO&quot;);

 // 이게 뭐라고 했지 여튼 true, false로 나눠서 return 값을 정해준다
        }
    }
}</code></pre><p>  <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**
그래도 고민 많이 하면서 해냈다..
  일단 요 괄호 문제는 강의 시간에 강사님께서 한번 풀이 해주셨던 문제로 기억하기 때문에, &quot;이걸 못풀면 난 2주동안 아무것도 안한거다&quot; 요런 느낌으로 앉은 자리에서 슉슉 풀었다.
  물론 boolean  값주는 거에서 조금 헤매긴 했지만 그래도 2주만에 백준 문제를 쇼쇽 풀어내니 다음 2주 후에는 난 얼마나 성장해있을까 기대도 된다</p>
<pre><code>&lt;br&gt;&lt;br&gt;</code></pre><p><strong>🤔<span style="color:pink">배운내용</strong></p>
<ol>
<li>stack 개념 복습 (pop은 값설정 X / push는 데이터 줘야함)</li>
<li>백준 문제 맨 처음에 N (횟수)를 무시하지 말것</li>
<li>stack에 emptyStack오류를 방지하기 위해 뭐라도 넣던지, emptyStack에 대해서 지정해줄 것</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[컬렉션프레임워 개념 노트 정리 ]]></title>
            <link>https://velog.io/@seoyeon_/%EC%BB%AC%EB%A0%89%EC%85%98%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/%EC%BB%AC%EB%A0%89%EC%85%98%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:14:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/2970f8c4-7ca4-4e65-b2da-93f6937ff64c/image.png" alt=""></p>
<p> 컬렉션프레임워 개념 노트 정리 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[매서드, 생성자 등 개념 노트 정리]]></title>
            <link>https://velog.io/@seoyeon_/%EB%A7%A4%EC%84%9C%EB%93%9C-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%93%B1-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/%EB%A7%A4%EC%84%9C%EB%93%9C-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%93%B1-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:13:31 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/73ed012c-49a5-4d9b-a73b-e942c6fbb550/image.png" alt=""></p>
<p>매서드, 생성자 등 개념 노트 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체, class 개념 노트정리 ]]></title>
            <link>https://velog.io/@seoyeon_/%EA%B0%9D%EC%B2%B4-class-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/%EA%B0%9D%EC%B2%B4-class-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:12:48 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/8fa3cb24-5285-4a57-afa8-16400c1586b0/image.png" alt=""></p>
<p>객체, class 개념 노트 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[배열 개념 노트 정리]]></title>
            <link>https://velog.io/@seoyeon_/%EB%B0%B0%EC%97%B4-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/%EB%B0%B0%EC%97%B4-%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:11:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/97b8456b-8856-414e-808e-305a50df5f71/image.jpg" alt=""></p>
<p>배열 개념 노트 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Queue개념 노트 정리]]></title>
            <link>https://velog.io/@seoyeon_/Queue%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/Queue%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:10:42 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/a3b29acc-220e-4e32-b364-0dc444f168ab/image.png" alt=""></p>
<p>Queue 개념 노트 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Stack개념 노트 정리]]></title>
            <link>https://velog.io/@seoyeon_/Stack%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@seoyeon_/Stack%EA%B0%9C%EB%85%90-%EB%85%B8%ED%8A%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 13 Apr 2023 12:09:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seoyeon_/post/92713deb-5a4c-4a7c-a062-1a3e52bf3c80/image.jpg" alt=""></p>
<p>Stack 개념 정리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BackJoon_25556]]></title>
            <link>https://velog.io/@seoyeon_/BackJoon25556</link>
            <guid>https://velog.io/@seoyeon_/BackJoon25556</guid>
            <pubDate>Thu, 13 Apr 2023 12:07:03 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorred-백준-포스택-25556-문제">⭐ <span style="color:red"> 백준 포스택 25556 문제</h4>
<pre><code>import java.util.Scanner;
import java.util.Stack;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] arr = new int[N];
        for (int i = 0; i &lt; N; i++) {
            arr[i] = sc.nextInt();
        }
        // 입력값 모두 변수로 바꿔줌

        Stack&lt;Integer&gt;[] stacks = new Stack[4];
        for (int i = 0; i &lt; 4; i++) {
            stacks[i] = new Stack&lt;&gt;();
            stacks[i].push(0);
        }
          // 만들어야 하는 4개의 스택을 stacks라는 배열로 만들어 준다.
             다만 만들어둔 스택이 아무 값도 안들어 있을수 있으니 0이라는 값을 넣어준다.
             emptyStack오류를 방지해준다 --&gt; 실제로 이 오류때문에 많이 헤맸다

        boolean result = true; 
          // 청소 가능여부를 판별해준 boolean형식의 result 변수를 만든다.

        for (int i : arr) {
            boolean inStack = false;
          // 일단 stacks에 arr배열값을 넣어도 될지 여부는 false로 초기화해준다.

            for (int j = 0; j &lt; 4; j++) {
                if (i &gt; stacks[j].peek()) {
                    stacks[j].push(i);
                    inStack = true;
                    break;
                }
            }
          // for문을 돌면서 만약 arr의 i 원소가 stacks[j]의 stack.peek값(가장 위의 값)보다 크다면 
             해당 stacks에 i원소를 더한다. 그리고 false로 초기화 해준 inStack의 값을 true로 바꾼다.

                if (!inStack){
                    result = false;
                    break;
                }
          // 만약 inStack이 불가하다면, result(청소 가능여부) 는 false로 바뀐다.

            }
            System.out.println(result ? &quot;YES&quot; : &quot;NO&quot;);
          // result가 true라면 YES를, false라면 NO를 반환해준다.

        }
    }
</code></pre><pre><code> &lt;br&gt;&lt;br&gt;</code></pre><p>  ** 👍 <span style="color:pink">내생각</sapn>**
  우선 해당 문제는 내가 혼자 힘으로 코드를 짤 수 없을거 같아서 어떻게 구현할지 생각만 해보고 구글링을 통해 해결했다.
  내가 생각한 부분은,
  ① 입력값을 배열로 만들자
  ② 청소가능 여부를 판단해줄 boolean 변수를 만들자
  ③ for문으로 입력값 배열을 돌면서, stack의 가장 마지막 값이 입력값 원소보다 작은지 판단하자
  요 3가지 정도였고,</p>
<p>  4가지 스택을 for문을 통해 배열로 만든 부분은 생각해내지 못했다. 
  스택을 4개로 모두 stack1, stack2, stack3, stack4로 만들어서 코드를 짜보려고 했는데, 각 스택의 peek를 비교하는 부분에서 for문이 적용되지 않아서 막혔다.</p>
<pre><code>&lt;br&gt;&lt;br&gt;</code></pre><p><strong>🤔<span style="color:pink">배운내용</strong></p>
<ol>
<li>for문으로 stacks 배열을 만들어서 각 stack을 배열에 넣는 구현법</li>
<li>stack에 들어갈 수 있는지 여부와 청소 가능 여부는 각기 다른 boolean변수를 가지고 있어야 한다.</li>
<li>result의 true, false값에 따라 출력값을 다르게 설정한 부분</li>
<li>stack 개념</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Programmers_배열의 평균값]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%8F%89%EA%B7%A0%EA%B0%92</link>
            <guid>https://velog.io/@seoyeon_/Programmers%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%8F%89%EA%B7%A0%EA%B0%92</guid>
            <pubDate>Thu, 13 Apr 2023 11:51:57 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorredprogrammers-n일차-배열의-평균값">⭐ <span style="color:red">Programmers N일차 배열의 평균값</h4>
<p><strong>1차 시도</strong></p>
<pre><code>class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        double sum = 0;
        for (int i = 0; i &lt; numbers.length ; i++){
            sum+=numbers[i];
        }
        answer = sum/numbers.length;
        return answer;
    }
}</code></pre><p>   <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**
  sum이라는 double형 변수를 만들어주고 , numbers 배열의 값을 순회 하면서 sum에 더해주는 방법을 생각해냈다.
  분명 지난주에는 저 += 적용법이 많이 어려웠는데 가면 갈수록 혼자 쓸 수 있게끔 실력이 는다는 점이 매우매우 흥미롭다!</p>
<p>  <br><br>
<strong>🤔<span style="color:pink">배운내용</strong></p>
<p>  1) +=; 를 써서 sum이라는 변수에 누적값을 더해주는 방법
  2) answer과 sum값을 모두 double형 인수로 만들어야 소수점 아래까지 모두 출력이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Programmers_피자 나눠 먹기 (3)]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B0-3</link>
            <guid>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B0-3</guid>
            <pubDate>Thu, 13 Apr 2023 11:49:01 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorredprogrammers-n일차-피자-나눠-먹기-3">⭐ <span style="color:red">Programmers N일차 피자 나눠 먹기 (3)</h4>
<p><strong>1차 시도</strong></p>
<pre><code>class Solution {
    public int solution(int slice, int n) {
        int answer = 0;

        if ( n % slice == 0){
            answer = n/slice;
        }else {
            answer = (n-n%slice)/slice + 1; 
        }
        return answer;
    }
}</code></pre><pre><code> &lt;br&gt;&lt;br&gt;</code></pre><p>  ** 👍 <span style="color:pink">내생각</sapn>**
  이것도 1번 나눠먹기랑 비슷한 방법으로 수학적으로(?) 접근하여 풀었다 !</p>
<p>  n이 나눠 떨어지면 몫을 답으로,
  나눠 떨어지지 않을 경우 n에 나머지를 빼고 다시 나눠준 후 몫에 1을 더해주었다.</p>
<p>  <br><br>
<strong>🤔<span style="color:pink">배운내용</strong>
  1번을 풀고 풀어서인지 쉽게 풀렸다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Programmers_피자 나눠 먹기 (2)]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B0-2</link>
            <guid>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B0-2</guid>
            <pubDate>Thu, 13 Apr 2023 11:38:58 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorredprogrammers-n일차-나누어-떨어지는-숫자-배열">⭐ <span style="color:red">Programmers N일차 나누어 떨어지는 숫자 배열</h4>
<p><strong>1차 시도</strong></p>
<pre><code>class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 1 ; i&lt;=6*n ; i++){
            if ((6*i)% n == 0){
                answer = i ;
                break;
            }  
        }
        return answer;
    }
}</code></pre><p>   <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**
  처음에는 최소공배수를 구할 생각을 했는데, 
  그럴려니까 약수 -&gt; 최대공약수 -&gt; 최소공배수를 구해야 해서 코드 매우 길어지고 직접 쓰기 어려워졌다.
  다른 방법을 찾아보니, 그냥 단순하게 6 * answer이 n으로 나눠 떨어지는 배수를 구하면 되는 것이였다!! 
 이 문제는 내 생각에 갇혀서 별 방법을 다 써보고 시간을 생각보다 많이 쏟았다. 그래도 그 와중에 공부를 좀 한거 같아서 보람차다</p>
<p>  <br><br>
<strong>🤔<span style="color:pink">배운내용</strong></p>
<p>  1) 문제를 읽고 방법을 생각하는 것도 좋지만, 생각해낸 방법으로 코드를 짜기 어렵다면 빠르게 다른 방법을 생각해보자!
  2) for문 안에 if문을 이제 안정적이게 넣을 수 있게 되었다 아자아자</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Programmers_피자 나눠 먹기(1)]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B01</link>
            <guid>https://velog.io/@seoyeon_/Programmers%ED%94%BC%EC%9E%90-%EB%82%98%EB%88%A0-%EB%A8%B9%EA%B8%B01</guid>
            <pubDate>Thu, 13 Apr 2023 11:35:29 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorredprogrammers-n일차-피자-나눠-먹기-1">⭐ <span style="color:red">Programmers N일차 피자 나눠 먹기 (1)</h4>
<p>  <strong>1차 시도</strong></p>
<pre><code>class Solution {
    public int solution(int n) {
        int answer = 0;
        if (n % 7 == 0 ){
            answer = n/7;

        }else if (n&lt; 7){
            answer = 1;
        }else {answer = (n-(n%7))/7 + 1;
              }
        return answer;
    }
}</code></pre><p>   <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**</p>
<p> 모든 사람이 1조각 이상 먹기 위해서는 주어진 n(인원수)에 n을 7로 나눴을 때의 나머지를 우선 빼줘서 몫만 구한 후에 +1판 해주면 된다 (요게 배열을 이용해서 푼게 맞나..)</p>
<p>  <br><br>
<strong>🤔<span style="color:pink">배운내용</strong></p>
<p>  1) if문을 길게 써보았는데도 문제가 생기지 않았다!
  2) 정말 천천히 아주 조금씩 실력이 늘고 있는게 살짝 실감난다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Programmers_나누어 떨어지는 숫자 배열]]></title>
            <link>https://velog.io/@seoyeon_/Programmers%EB%82%98%EB%88%84%EC%96%B4-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%88%AB%EC%9E%90-%EB%B0%B0%EC%97%B4</link>
            <guid>https://velog.io/@seoyeon_/Programmers%EB%82%98%EB%88%84%EC%96%B4-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%88%AB%EC%9E%90-%EB%B0%B0%EC%97%B4</guid>
            <pubDate>Wed, 12 Apr 2023 13:54:16 GMT</pubDate>
            <description><![CDATA[<h4 id="⭐-span-stylecolorredprogrammers-n일차-나누어-떨어지는-숫자-배열">⭐ <span style="color:red">Programmers N일차 나누어 떨어지는 숫자 배열</h4>
<p><strong>1차 시도</strong></p>
<pre><code>class Solution {
    public int[] solution(int[] arr, int divisor) {
        int cnt = 0;
        int j = 0;

        for (int i = 0; i &lt; arr.length; i++) {
            if (arr[i] % divisor == 0) {
                cnt++;
            }
            if (cnt == 0) {
                int[] answer = {-1};
                return answer;
            }
        }

   // result 배열의 크기 구하기



        int[]answer = new int[cnt];
        for (int i = 0; i &lt; arr.length; i++) {
            if (arr[i] % divisor == 0) {
                 answer[j] = arr[i];
                j++;
            }
        }
            Arrays.sort(answer);
            return answer;
    }
}

 // 구한 크기로 for문 돌면서 arr[i]번째 값을 answer에 값에 넣기</code></pre><p><strong>2차 시도</strong></p>
<pre><code>import java.util.ArrayList;
import java.util.Arrays;


class Solution {
    public int[] solution(int[] arr, int divisor) {
        int answer[] = {};
        ArrayList&lt;Integer&gt; tmp = new ArrayList&lt;Integer&gt;();

        for (int i = 0; i &lt; arr.length; i++) {
            if (arr[i] % divisor == 0) {
                tmp.add(arr[i]);
            }

        }
        if (tmp.isEmpty()){
            tmp.add(-1);
        }
        answer = new int[tmp.size()];
        for (int i = 0; i &lt;tmp.size(); i++){
            answer[i] = tmp.get(i);
        }

        Arrays.sort(answer);

        return answer;
    }
}

</code></pre><p>   <br><br>
  ** 👍 <span style="color:pink">내생각</sapn>**
왜 자꾸 코드 실행은 되는데 제출 후 채점하면 오류가 날까
이 문제 말고 다른 문제들도 실행은 되는데 채점은 안된다</p>
<p>for문을 사용해서 각 배열/ArrayList를 돌면서 divisor이랑 나눠지는지 확인하고 true면 result 배열/ArrayList에 추가할 수 있도록 하였다.</p>
<p><br><br>
<strong>🤔<span style="color:pink">배운내용</strong>
  for문 쓰는게 그래도 어느정도 익숙해지고 있는거 같다
  아직 다중 for문은 조금 헷갈리기는 한다</p>
<p>  2차시도 때는 배열에 별도로 값을 추가해주는 것이 아니라 ArrayList를 활용해서 문제를 풀었다
  배열은 사이즈가 정해져있기 때문에 데이터를 마음대로 추가할 수 없으나 ArrayList는 add 매서드를 활용해서 추가 가능하다.
  ArrayList 자체에 sort를 사용할 수 없으니, tmp(ArrayList)를 만들어 값들을 tmp에 저장해놓고, 저장된 값을 다시 answer이라는 배열에 추가하는 방식으로 구현했다.</p>
<blockquote>
<p>import java.util.Arrays;
import java.util.Arrays;
요거를 맨 위에 안 써줘서 한 10분동안 내 코드를 의심하는 시간을 가졌다..</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>