<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>코린이 탈출</title>
        <link>https://velog.io/</link>
        <description>초보 개발자</description>
        <lastBuildDate>Fri, 09 Jun 2023 05:06:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>코린이 탈출</title>
            <url>https://media.vlpt.us/images/pinkpig_21/profile/e8b7f394-0249-40f6-b76a-fa8f1fa2a00d/짱구2222.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 코린이 탈출. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/pinkpig_21" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[프로그래머스] 택배 배달과 수거하기 - Java]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%83%9D%EB%B0%B0-%EB%B0%B0%EB%8B%AC%EA%B3%BC-%EC%88%98%EA%B1%B0%ED%95%98%EA%B8%B0-Java</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%83%9D%EB%B0%B0-%EB%B0%B0%EB%8B%AC%EA%B3%BC-%EC%88%98%EA%B1%B0%ED%95%98%EA%B8%B0-Java</guid>
            <pubDate>Fri, 09 Jun 2023 05:06:53 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-2023-kakao-blind-recruitment-택배-배달과-수거">📢 [2023 KAKAO BLIND RECRUITMENT] 택배 배달과 수거</h2>
<p><a href="https://school.programmers.co.kr/learn/courses/30/lessons/150369">프로그래머스 문제 링크</a></p>
<h2 id="풀이">풀이</h2>
<p>사용언어 : <code>Java</code></p>
<p><font style="color:blue"><strong>그리디 알고리즘</strong></font>사용</p>
<ol>
<li>가장 먼 곳부터 배달과 수거를 수행한다.</li>
<li>상자가 <code>cap</code>보다 많아지면 배달과 수거를 그만두고 돌아온다.</li>
<li>집의 배달과 수거가 완료가 되면 <code>current</code>(방문할 집 변수)값을 -1 해준다.</li>
<li><code>answer</code>(이동거리) 는 (<code>current</code>(방문할 집) +1 ) * 2를 더해준다.</li>
</ol>
<ul>
<li>idx라 +1 해주기</li>
<li>다시 물류창고로 돌아와야 하기 때문에 *2 를 해준다.</li>
</ul>
<pre><code class="language-java">class Solution {
    public long solution(int cap, int n, int[] deliveries, int[] pickups) {
        // 그리디 알고리즘
        long answer = 0;

        // 방문할 집 (가장 먼 곳)
        int current = n-1;

        int[] deliveries2 = deliveries.clone();
        int[] pickups2 = pickups.clone();
        while(current &gt;= 0) {
            if(pickups2[current] == 0 &amp;&amp; deliveries2[current] == 0){
                current--;   
                continue;
            }
            answer += (current+1) * 2;
            // 배달
            int deliverBox = 0;
            for(int i = current; i &gt;= 0 ; i--) {
                if(deliveries2[i]+deliverBox &gt; cap) {
                    deliveries2[i] -= cap - deliverBox;
                    break;
                }
                deliverBox += deliveries2[i];
                deliveries2[i] = 0;
            }

            // 수거
            int pickBox = 0;
            for(int i = current; i &gt;= 0 ; i--) {
                if(pickups2[i]+pickBox &gt; cap) {
                    pickups2[i] -= cap - pickBox;
                    break;
                }
                pickBox += pickups2[i];
                pickups2[i] = 0;
            }

            if(pickups2[current] == 0 &amp;&amp; deliveries2[current] == 0){
                current--;   
            }

        }

        return answer;
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 개인정보 수집 유효기간 - Java
]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91-%EC%9C%A0%ED%9A%A8%EA%B8%B0%EA%B0%84-Java</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91-%EC%9C%A0%ED%9A%A8%EA%B8%B0%EA%B0%84-Java</guid>
            <pubDate>Thu, 08 Jun 2023 08:53:20 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-2023-kakao-blind-recruitment개인정보-수집-유효기간">📢 [2023 KAKAO BLIND RECRUITMENT]개인정보 수집 유효기간</h2>
<p><a href="https://school.programmers.co.kr/learn/courses/30/lessons/150370">프로그래머스 문제 링크</a></p>
<h2 id="풀이">풀이</h2>
<p>사용언어 : <code>Java</code></p>
<ol>
<li>유효기간을 담은 1차원 문자열 배열 <code>terms</code>를 HashMap 형태로 &lt;약간 종류 , 유효기간 &gt; 저장한다.</li>
<li>수집된 개인정보 정보를 담은 <code>privacies</code>를 for문으로 돌며 개인정보 파기날짜를 계산한다.</li>
</ol>
<pre><code class="language-java">import java.util.*;

class Solution {
    public int[] solution(String today, String[] terms, String[] privacies) {

        // 개인정보 n개 약관마다 유효기간이 정해져있음 유효기간이 지나면 반드시 파기하기.
        // 모든달은 28일까지 있다고 가정

        // today : yyyy.mm.dd 형태
        // terms : 약관종류 유효기간(m)
        // 출력 : 파기해야할 개인정보의 번호를 오름차순 출력
        // 특수문자는 앞에 \\ or []로 감싸주기
        String[] tTemp = today.split(&quot;[.]&quot;);
        int tYear = Integer.parseInt(tTemp[0]);
        int tMonth = Integer.parseInt(tTemp[1]);
        int tDay = Integer.parseInt(tTemp[2]);

        // terms 값들을 hashMap에 저장
        Map&lt;String, Integer&gt; term = new HashMap&lt;&gt;();
        for(String s : terms) {
            String[] temp = s.split(&quot; &quot;);
            term.put(temp[0], Integer.parseInt(temp[1]));
        }

        int count = 0;
        boolean[] find = new boolean[privacies.length+1];


        int num = 1;
        for(String s : privacies){
            String[] temp = s.split(&quot; &quot;);
            String[] temp2 = temp[0].split(&quot;[.]&quot;);

            // 파기 날짜
            int year = Integer.parseInt(temp2[0]);
            int month = Integer.parseInt(temp2[1]);
            int day = Integer.parseInt(temp2[2]);

            month = month + term.get(temp[1]);
            if(month &gt; 12) {
                int t = month / 12;
                int tt = month % 12;
                if(tt == 0) {
                    year += t-1;
                    month = 12;
                }
                else {
                    year += t;
                    month = tt;
                }

            }

            if(year &lt; tYear || (year == tYear &amp;&amp; month &lt; tMonth ) || (year == tYear &amp;&amp; month == tMonth &amp;&amp; day &lt;= tDay )){
                count+=1;
                find[num] = true;
            }
            num++;
        }


        int[] answer = new int[count];
        int idx = 0;
        for(int i = 1; i &lt;= privacies.length; i++){
            if(find[i]) {
                answer[idx] = i;
                idx++;
            }
        }
        return answer;
    }
}</code></pre>
<hr>
<h4 id="⚡-구현할-때-발생한-실수">⚡ 구현할 때 발생한 실수</h4>
<ul>
<li>특수문자로 split을 할때 특수문자를 <code>[]</code>로 감싸주거나 앞에 <code>\\</code>을 붙여야 합니다.
ex) split(&quot;\.&quot;) , split(&quot;[.]&quot;)</li>
<li>유효기간이 최대1년이 안넘긴다고 착각하여 파기날짜를 계산할때 month가 12월이 넘어가면 +1만 해주었다. 
=&gt; month / 12 몫 만큼 year 더해주기.</li>
<li>month가 12의 배수일 경우 예외처리를 안해주었다.</li>
<li><blockquote>
<p>month % 12가 0일 경우 month = 12를 year += (month / 12) -1;를 해주었</p>
</blockquote>
</li>
</ul>
<h4 id="✔️-check">✔️ check</h4>
<p>정답을 boolean배열과 count로 answer를 저장했는데,
ArrayList --&gt; 배열 방법을 사용해 코드 간략화 하기.</p>
<pre><code class="language-java"> List&lt;Integer&gt; answer = new ArrayList&lt;&gt;();
 String[] array = answer.toArray(new String[arrayList.size()]);</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 추억점수 - Java]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B6%94%EC%96%B5%EC%A0%90%EC%88%98-Java</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B6%94%EC%96%B5%EC%A0%90%EC%88%98-Java</guid>
            <pubDate>Fri, 02 Jun 2023 14:17:11 GMT</pubDate>
            <description><![CDATA[<h1 id="📢추억점수">📢추억점수</h1>
<p><a href="https://school.programmers.co.kr/learn/courses/30/lessons/176963">문제 링크</a></p>
<h2 id="풀이">풀이</h2>
<p>사용언어 : <code>java</code></p>
<p>HashMap을 사용해 <code>name</code>: <code>그리움 점수</code>을 저장한 후,
<code>photo</code> 배열의 인물들이 yearningScore에 값이 있으면 추억점수를 더해준다.</p>
<p><span style="color:gray"><em>3중 for문으로도 풀린다.</em></span></p>
<pre><code class="language-java">import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        HashMap&lt;String, Integer&gt; yearningScore = new HashMap&lt;&gt;();

        for(int i = 0; i &lt; name.length; i++) {
            yearningScore.put(name[i], yearning[i]);
        }

        int[] answer = new int[photo.length];

        for(int i = 0 ; i &lt; photo.length; i++) {
            int score = 0;
            for(String s : photo[i] ){
                if(yearningScore.containsKey(s)) score += yearningScore.get(s);
            }
            answer[i] = score;
        }
        return answer;
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 연속된 부분 수열의 합 - JAVA]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%97%B0%EC%86%8D%EB%90%9C-%EB%B6%80%EB%B6%84-%EC%88%98%EC%97%B4%EC%9D%98-%ED%95%A9-JAVA</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%97%B0%EC%86%8D%EB%90%9C-%EB%B6%80%EB%B6%84-%EC%88%98%EC%97%B4%EC%9D%98-%ED%95%A9-JAVA</guid>
            <pubDate>Thu, 01 Jun 2023 14:13:27 GMT</pubDate>
            <description><![CDATA[<h1 id="⭐연속된-부분-수열의-합">⭐연속된 부분 수열의 합</h1>
<p><a href="https://school.programmers.co.kr/learn/courses/30/lessons/178870">프로그래머스 문제 링크</a></p>
<h2 id="풀이">풀이</h2>
<p>사용언어 : JAVA</p>
<h4 id="풀이-1--시간-초과">풀이 1 : 시간 초과</h4>
<ol>
<li><strong>누적합</strong>을 이용해 부분 수열의 합이 <code>k</code>를 만족하는 배열의 시작과 끝 idx를 <code>answerStart</code>와 <code>answerEnd</code>저장한다.</li>
<li><code>maxSize</code>에 부분 수열의 길이를 저장하고, 부분 수열의 합이 <code>k</code>를 만족하는 배열의 길이를 비교해 작을 경우 <code>answerStart</code>와 <code>answerEnd</code>를 바꾸어주기. </li>
</ol>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] sequence, int k) {
        int[] cal = new int[sequence.length];
        cal[0] = sequence[0];
        // 누적합을 저장
        for(int i = 1; i &lt; sequence.length; i++) {
            cal[i] = cal[i-1] + sequence[i];
        }
        int answerEnd = 0;
        int answerStart = 0;
        int maxSize = sequence.length;

        for(int i = 0; i &lt; sequence.length; i++) {
            if (maxSize == 1) {
                break;
            }
            if(cal[i] &lt; k) continue;
            if(cal[i] == k){
                if(maxSize &gt; i){
                    answerEnd = i;
                    answerStart = -1;
                    maxSize = i+1;
                }
                continue;
            }

            for(int j = i-1; j &gt;= answerStart; j--){
                if(cal[i] - cal[j] &gt; k || i-j &gt;= maxSize ){
                    break;
                }

                if(cal[i] - cal[j] == k &amp;&amp; i-j &lt; maxSize) {
                    answerEnd = i;
                    answerStart = j;
                    maxSize = i-j;
                    break;
                }

            }

        }

        int[] answer = {answerStart+1, answerEnd};
        return answer;
    }
}</code></pre>
<h4 id="풀이-2--⭐통과⭐">풀이 2 : ⭐통과⭐</h4>
<p><strong>투포인터 알고리즘</strong>을 활용</p>
<blockquote>
<p><strong>투포인터 알고리즘</strong>이란? 
리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘</p>
</blockquote>
<p>while문을 사용해 <code>sum</code>(부분 수열의 합)을 구합니다.
만약 <code>sum</code>이 <code>k</code>일 경우 배열의 길이을 구하고 <code>left</code>, <code>right</code>와 비교해 <code>arraySize</code>가 작을경우 <code>left</code>와 <code>right</code>를 갱신 시켜줍니다.</p>
<p>마지막으로 l을 옮기면서 sum에서 sequence[l]을 빼줍니다.</p>
<pre><code class="language-java">class Solution {
    public int[] solution(int[] sequence, int k) {

        int n = sequence.length;
        int left = 0;
        int right = n;
        int sum = 0;
        for(int l = 0, r = 0; l &lt; n; l++){
            while(r &lt; n &amp;&amp; sum &lt; k) {
                sum+= sequence[r++];
            }

            if(sum == k) {
                int arraySize = r - l -1;
                if((right-left) &gt; arraySize ) {
                    left = l;
                    right = r - 1;
                }
            }

            sum -= sequence[l];

        }
        int[] answer = {left, right};
        return answer;
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 음양 더하기 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9D%8C%EC%96%91-%EB%8D%94%ED%95%98%EA%B8%B0-python</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9D%8C%EC%96%91-%EB%8D%94%ED%95%98%EA%B8%B0-python</guid>
            <pubDate>Sat, 25 Jun 2022 10:25:51 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-음양-더하기-문제">📢 음양 더하기 문제</h2>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/76501">프로그래머스 문제 링크</a></p>
<h2 id="풀이">풀이</h2>
<p>sum은 모든 수의 합
zip을 이용하여 signs이 false면 빼준다.</p>
<h2 id="코드">코드</h2>
<pre><code class="language-python">def solution(absolutes, signs):
    sum = 0
    for x,y in zip(absolutes, signs):
        if y:
            sum +=x
        else:
            sum-=x
    return sum</code></pre>
<h3 id="다른-사람-풀이">다른 사람 풀이</h3>
<p>한 줄로 해결 가능..</p>
<pre><code class="language-python">def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 내적 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%82%B4%EC%A0%81-python</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%82%B4%EC%A0%81-python</guid>
            <pubDate>Fri, 24 Jun 2022 08:14:49 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-내적-문제">📢 내적 문제</h2>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/70128">프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p><code>zip</code>을 이용하여 a와 b의 요소들을 하나씩 꺼내어 곱한값을 result에 넣어준 후
sum을 하여 정답을 구하면 끝!</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">def solution(a, b):
    result = []
    for x, y in zip(a, b):
        result.append(x*y)
    return sum(result)
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 소수만들기 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4</guid>
            <pubDate>Thu, 23 Jun 2022 10:06:50 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-소수만들기-문제">📢 &quot;소수만들기&quot; 문제</h2>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/12977">프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>nums의 각 원소는 1이상 1000이하의 자연수 이고, 중복된 숫자가 들어있지 않으므로 
3개의 수를 더했을 때 최대로 나올 수 있는 수는 2997이다.</p>
<p>result의 인덱스의 값이 소수일때 <code>True</code>,
소수가 아닐 경우 <code>False</code>
소수인 숫자를 먼저 구한다음</p>
<p><code>combination</code>로 입력된 숫자로 나올 수 있는 모든 조합을 구한다.
그 조합들을 다시 sum을 하여 list를 구한뒤
result[list의 값]이 true이면 소수 이므로 
count를 +1해준다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">from itertools import combinations
result = [True] * 2998
result[0] = False
result[1] = False

for i in range(2, 1500):
    if result[i]:
        a = 2
        while i * a &lt;= 2997:
            result[i*a] = False
            a += 1


def solution(nums):
    sosu = list(combinations(nums, 3))
    sosu = list((map(sum, sosu)))
    count = 0
    for x in sosu:
        if result[x]:
            count += 1

    return count</code></pre>
<h3 id="다른-사람-풀이">다른 사람 풀이</h3>
<p><code>combinations</code>로 조합을 구한뒤 소수인지 아닌지를 판별</p>
<pre><code class="language-python">def solution(nums):
    from itertools import combinations as cb
    answer = 0
    for a in cb(nums, 3):
        cand = sum(a)
        for j in range(2, cand):
            if cand%j==0:
                break
        else:
            answer += 1
    return answer
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2798번]]></title>
            <link>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-2798%EB%B2%88</link>
            <guid>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-2798%EB%B2%88</guid>
            <pubDate>Sun, 19 Jun 2022 11:35:30 GMT</pubDate>
            <description><![CDATA[<h2 id="📢-2798번-문제">📢 2798번 문제</h2>
<p><img src="https://velog.velcdn.com/images/pinkpig_21/post/2c6fb97b-fb0f-44d3-b557-9f2f11d84dab/image.png" alt=""></p>
<p><a href="https://www.acmicpc.net/problem/2798">백준 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용언어 : <code>python</code>
<code>n</code> : 카드의 개수
<code>m</code> : 넘지 않아야 하는 수</p>
<p>for문으로 m을 넘지 않는 모든 경우를 result에 추가한다.
max로 최댓값 구하고 출력</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">n, m = map(int,input().split())
card = list(map(int,input().split()))
result = []
for i in range(n):
    for a in range(i+1,n):
        for b in range(a+1,n):
            if ( card[i] +card[a] + card[b] &lt;= m):
                result.append(card[i]+card[a]+card[b])

print(max(result))
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[스프레드 연산자]]></title>
            <link>https://velog.io/@pinkpig_21/%EC%8A%A4%ED%94%84%EB%A0%88%EB%93%9C-%EC%97%B0%EC%82%B0%EC%9E%90</link>
            <guid>https://velog.io/@pinkpig_21/%EC%8A%A4%ED%94%84%EB%A0%88%EB%93%9C-%EC%97%B0%EC%82%B0%EC%9E%90</guid>
            <pubDate>Fri, 17 Jun 2022 09:17:34 GMT</pubDate>
            <description><![CDATA[<h2 id="🔎-스프레드-연산자란">🔎 스프레드 연산자란?</h2>
<blockquote>
<p>배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 또는 요소로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있습니다. - <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Spread_syntax">MDN</a></p>
</blockquote>
<h2 id="💡-스프레드-연산자-활용">💡 스프레드 연산자 활용</h2>
<h4 id="❗-배열에서-사용">❗ 배열에서 사용</h4>
<pre><code class="language-javascript">var num = [1,2,3];
var num2 = [4,5,6];

var num3 = [...num,...num2];
console.log(num3) // [1,2,3,4,5,6]

var num4 = [...num,...num2,...num]
console.log(num4) // [1,2,3,4,5,6,1,2,3]</code></pre>
<h4 id="❗-객체에서-사용">❗ 객체에서 사용</h4>
<pre><code class="language-javascript">const studentName = {
     name : &quot;Jeny&quot; 
}

const studentAge = {
    age : 17
}

const student = {
    ...studentName,
    ...studentAge
}

console.log(student) // {name:&quot;Jeny&quot;, age:17 }</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[오류 해결] then, 비동기 ]]></title>
            <link>https://velog.io/@pinkpig_21/%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-then-%EB%B9%84%EB%8F%99%EA%B8%B0</link>
            <guid>https://velog.io/@pinkpig_21/%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-then-%EB%B9%84%EB%8F%99%EA%B8%B0</guid>
            <pubDate>Tue, 14 Jun 2022 12:14:34 GMT</pubDate>
            <description><![CDATA[<h2 id="❗-문제점">❗ 문제점</h2>
<ul>
<li>게시글 좋아요 버튼을 눌렀을 때 하트버튼 모양과 좋아요 수가 이 바뀌지 않음</li>
<li>댓글을 입력하였을 때 화면에 보여주는 코드가 먼저 실행이 되어 때때로 채팅이 실시간으로 바뀌지 않음</li>
</ul>
<h2 id="💡-해결방법">💡 해결방법</h2>
<p>게시글 데이터와 댓글 데이터를 비동기로 처리하여 GET 하는게 문제의 원인이라 생각.</p>
<p>맨처음에는 window.location.replace()로
새로고침을 주어 새로운 데이터를 GET하도록 처리.
화면 새로고침이 너무 자주 일어나는 듯하여 다른 방법을 생각</p>
<p><strong>새로고침 말고, then 사용</strong>
데이터를 GET하는 코드 뒤에 .then() 메서드를 사용하여  여러개의 함수를 연결하여 처리하였다.</p>
<p><img src="https://velog.velcdn.com/images/pinkpig_21/post/364f84a6-2449-4084-b0ee-39a38d6e5155/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 크레인 인형뽑기 게임]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84</guid>
            <pubDate>Mon, 13 Jun 2022 11:07:33 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-크레인-인형뽑기-게임-문제">📢 &quot;크레인 인형뽑기 게임&quot; 문제</h1>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/64061">프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용언어 :<code>python</code>
answer는 뽑은 인형을 담는 list로
<code>board[height][i-1]</code>의 값이 0이 아닌 경우 answer에 그 값을 담고,  인형을 뽑았으니 
<code>board[height][i-1]</code> = 0을 해준다.
이렇게 뽑을때 마다
answer의 마지막 두 값이 연속으로 같은지 확인해준다.
같으면 answer에서 삭제해주고 count+2를 해준다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">def solution(board, moves):
    answer = []
    count = 0

    for i in moves:
        height = 0
        while height &lt;= (len(board)-1):
            if board[height][i-1] == 0:
                height += 1
            else:
                answer.append(board[height][i-1])
                board[height][i-1] = 0
                break
        if len(answer) &gt; 1:
            if answer[-1] == answer[-2]:
                count += 2
                del answer[-2:]

    return count</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 13164번]]></title>
            <link>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-13164%EB%B2%88</link>
            <guid>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-13164%EB%B2%88</guid>
            <pubDate>Fri, 10 Jun 2022 09:41:00 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-행복-유치원-13164번-문제">📢 &quot;행복 유치원 13164번 문제&quot;</h1>
<p><img src="https://velog.velcdn.com/images/pinkpig_21/post/e754f23d-188c-4843-a911-4623c010a397/image.png" alt=""></p>
<p><a href="https://www.acmicpc.net/problem/13164">백준 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용 언어 : <code>python</code></p>
<p><code>cost</code>는 인접한 아이들의 키 차이로 티셔츠 비용이라 볼 수 있다.
<code>cost</code>를 구한 후 <code>cost(max)</code>를 기준으로 조를 짜면 최소 비용을 구할 수 있다.
3개를 조를 만들기 위해선 2번 나누어주어야 한다.
그래서 <code>cost</code>를 <strong>정렬</strong>한 후 
가장 큰 수인 <code>cost[-1]</code>을 <code>k-1</code>만큼 삭제해준다.</p>
<p>그 후 <code>cost</code>비용을 다 합치면 총 비용이 나온다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">n, k = list(map(int, input().split()))

kid = list(map(int, input().split()))
kid.sort()
cost = []

for i in range(n-1):
    cost.append(kid[i+1]-kid[i])

cost.sort()

for y in range(k-1):
    del cost[-1]
print(sum(cost))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 1931번]]></title>
            <link>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-1931%EB%B2%88</link>
            <guid>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-1931%EB%B2%88</guid>
            <pubDate>Fri, 10 Jun 2022 09:21:45 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-회의실-배정-1931번-문제">📢 &quot;회의실 배정 1931번&quot; 문제</h1>
<p><img src="https://velog.velcdn.com/images/pinkpig_21/post/299579da-039d-4e2a-bdcf-780b73ae8ded/image.png" alt=""></p>
<p><a href="https://www.acmicpc.net/problem/1931">백준 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용 언어 : <code>python</code>
count : 회의를 할 수 있는 개수
office_t : [회의 시작시간, 끝나는 시간]</p>
<p>1.정렬을 하여 시작하는 시간이 빠를 수록 list(<code>office_t</code>)의 앞에 오도록 한다.
2. office_t[0]의 끝나는 시간을 기준으로 office_t[1]의 시작하는 시간과 끝나는 시간을 비교한다.</p>
<ul>
<li><code>office_t[0]의 끝나는 시간</code> &gt; <code>office_t[1]의 시작하는 시간</code> and <code>office_t[0]의 끝나는 시간</code> &gt; <code>office_t[1]의 끝나는 시간</code>
: <code>office_t[0]</code>을 삭제한다.</li>
<li><code>office_t[0]의 끝나는 시간</code> &lt;= <code>office_t[1]</code>의 시작하는 시간
: count를 +1 해주고 <code>office_t[0]</code>을 삭제해준다.</li>
<li>나머지 경우는 office_t[1]을 삭제해준다.</li>
</ul>
<p>count 가 1부터 시작하는 이유
while 이 len(office_t)&gt;=2동안 반복되기 때문에 마지막 회의를 추가를 못해준다.
그래서 1부터 시작</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">import sys
n = int(input())
office_t = []
for _ in range(n):
    x = list(map(int, sys.stdin.readline().split()))
    office_t.append(x)
office_t.sort()

count = 1
while len(office_t) &gt;= 2:
    if office_t[0][1] &gt; office_t[1][0] and office_t[0][1] &gt; office_t[1][1]:
        del office_t[0]
    elif office_t[0][1] &lt;= office_t[1][0]:
        del office_t[0]
        count += 1
    else:
        del office_t[1]
print(count)
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[ Redux란❓]]></title>
            <link>https://velog.io/@pinkpig_21/Redux%EB%9E%80</link>
            <guid>https://velog.io/@pinkpig_21/Redux%EB%9E%80</guid>
            <pubDate>Thu, 09 Jun 2022 11:22:47 GMT</pubDate>
            <description><![CDATA[<h1 id="👀redux란">👀Redux란?</h1>
<p><code>상태관리 라이브러리</code>로 애플리케이션의 복잡성을 낮추어 코드의 결과를 예측 가능하게 만들어 주는 도구</p>
<blockquote>
<h3 id="왜-사용하는가">왜 사용하는가?</h3>
<p><a href="https://ko.redux.js.org/">리덕스 공식 홈페이지 참조</a></p>
</blockquote>
<ul>
<li><strong>예측 가능</strong>
  Redux는 일관적으로 동작하고, 서로 다른 환경(클라이언트, 서버, 네이티브)에서도 실행되며, 테스트하기 쉬운 앱을 작성하도록 도와줍니다.</li>
<li><strong>중앙화</strong>
  앱의 상태와 로직을 중앙화하여 실행 취소/다시 실행, 영속적인 상태 등의 강력한 기능을 사용할 수 있게 합니다.</li>
<li><strong>쉬운 디버깅</strong>
  Redux DevTools는 앱의 상태가 언제, 어디서, 왜, 어떻게 바뀌었는지 쉽게 추적할 수 있도록 해줍니다. 
  Redux의 아키텍처를 통해 변경사항을 기록하고, &quot;시간여행형 디버깅&quot;을 사용하고, 완전한 에러 리포트를 서버로 보낼 수 있습니다.</li>
<li><strong>유연함</strong>
  Redux는 어떤 UI 레이어에서도 동작하며, 여러분의 요구에 부합하는 거대한 애드온 생태계를 가지고 있습니다.</li>
</ul>
<blockquote>
<h3 id="언제-사용해야-될까">언제 사용해야 될까?</h3>
<p><a href="https://redux.js.org/faq/general#when-should-i-use-redux">리덕스 홈페이지</a>에 나와있어요!</p>
</blockquote>
<ul>
<li>앱 상태가 자주 업데이트 될때</li>
<li>앱의 여러 위치에 필요한 많은 양의 상태가 있을 때</li>
<li>상태를 업데이트 하는 로직이 복잡할 때</li>
<li>상태가 업데이트되는 시점을 관찰할 필요가 있을 때</li>
<li>앱이 중형 또는 대형 코드가 있고, 많은 사람들이 작업을 할때</li>
</ul>
<h2 id="❗-redux의-3가지-원칙">❗ Redux의 3가지 원칙</h2>
<h4 id="1-single-source-of-truth">1. Single source of truth</h4>
<p>Redux 는 애플리케이션에 <code>스토어</code>를 만들어 그 한곳에서 상태를 관리, 즉 데이터를 <code>중앙 집중적</code>으로 관리</p>
<h4 id="2-state-is-read-only">2. State is read-only</h4>
<p>상태는 읽기 전용이다.
외부에서 데이터를 직접적으로 제어하지 못하게 막음으로써 의도하지 않게 상태가 바뀌는것을 차단한다.</p>
<h4 id="3-changes-are-made-with-pure-functions">3. changes are made with pure functions</h4>
<p>변화를 일으키는 함수, 리듀서는 순수한 함수여야 한다.
<code>리듀서</code>는 이전상태의 액션을 받아 다음 상태를 반환하는 순수함수로, 이전 상태값을 변경하는 것이 아닌 새로운 상태값을 반환한다.</p>
<h2 id="redux의-장점">Redux의 장점</h2>
<p>UNDO, REDO가 너무 쉽게 가능함
디버거의 통해 현재상태를 볼수 잇찌만 리덕스는 현재 상태뿐만 아니라 과거 상태를 볼 수 있다.(문제해결을 쉽게하도록 도와줌)
모듈 리로딩 가능 ( 자동으로 애플리케이션에 반영 ) 
리덕스를 쓰면 좋은 이유
리덕스만 가지고 있는 장점
: 시간 여행을 할 수 있따</p>
<h2 id="💡-redux-flow">💡 Redux Flow</h2>
<p><img src="https://blog.kakaocdn.net/dn/s633R/btrfXHylm9F/NFGdvLG9kaU486rL3dK3H1/img.gif" alt=""></p>
<p><a href="https://ivorycode.tistory.com/entry/Redux%EC%9D%98-%ED%9D%90%EB%A6%84%EA%B3%BC-%EC%98%88%EC%A0%9C">출처</a></p>
<h2 id="📢-redux-기본-용어">📢 Redux 기본 용어</h2>
<h3 id="1-store">1. store</h3>
<p>정보가 저장되는 장소로 하나의 프로젝트에는 하나의 스토어만 존재한다.</p>
<ul>
<li>현재의 상태 / 리듀서 / 내장함수를 포함</li>
</ul>
<h3 id="2-state">2. state</h3>
<ul>
<li>실제 정보 </li>
</ul>
<h3 id="3-reducer">3. reducer</h3>
<p>변화를 일으키는 함수로 두가지의 파라미터(현재의 상태, 전달 받은 액션)를 받아온다. 
두 가지의 파라미터를 참조하여 새로운 상태를 반환</p>
<ul>
<li>useReducer와 같은 형태</li>
<li>state를 갱신할 수 있는 유일한 함수.</li>
</ul>
<h3 id="4-render">4. render</h3>
<ul>
<li>store 밖에있음</li>
<li>ui을 만들어주는 내가 만드는 코드</li>
<li>state값을 참조해서 ui를 만드는 코드</li>
</ul>
<h3 id="5-dispatch">5. dispatch</h3>
<p>스토어의 내장함수로 action을 발생시킴.</p>
<ul>
<li>dispatch라는 함수는 action을 파라미터로 전달</li>
<li>즉 Reducer 함수에게 Action을 송신</li>
</ul>
<h3 id="6-subscribe">6. subscribe</h3>
<p>state값이 바뀔때 마다 render 함수 호출 및 ui 갱신</p>
<ul>
<li>React에서 Redux를 사용할 때 보통 이 함수를 직접 사용하는 일은 없다.</li>
<li>대신 useSelector Hook을 사용하여 Redux Store의 상태에 구독한다.</li>
</ul>
<h3 id="7-getstate">7. getState</h3>
<ul>
<li>state 값 가져오기</li>
</ul>
<h3 id="8-action">8. action</h3>
<p>상태 변화를 일으킬 때 참조하는 객체로, 상태에 변화가 필요할 때 발생시킨다.</p>
<ul>
<li>이벤트라고 생각하면 된다.</li>
<li>액션 객체는 type 필드를 반드시 가지고 있어야 함.</li>
<li>그 외 속성값은 개발자가 마음대로 추가</li>
</ul>
<blockquote>
<p>참조사이트
<a href="https://kyun2da.dev/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/Redux-%EC%A0%95%EB%A6%AC/">Redux 정리</a>
<a href="https://react.vlpt.us/redux/01-keywords.html">6장.리덕스</a>
<a href="https://hanamon.kr/redux%EB%9E%80-%EB%A6%AC%EB%8D%95%EC%8A%A4-%EC%83%81%ED%83%9C-%EA%B4%80%EB%A6%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/">Redux란</a>
<a href="https://opentutorials.org/module/4078">생활코딩</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 7568번]]></title>
            <link>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-7568%EB%B2%88</link>
            <guid>https://velog.io/@pinkpig_21/%EB%B0%B1%EC%A4%80-7568%EB%B2%88</guid>
            <pubDate>Wed, 08 Jun 2022 09:32:11 GMT</pubDate>
            <description><![CDATA[<h1 id="📢덩치-7568번-문제">📢&quot;덩치 7568번&quot; 문제</h1>
<p><img src="https://velog.velcdn.com/images/pinkpig_21/post/b273e01c-95f3-4bee-95c5-52ad65df6cf5/image.png" alt=""></p>
<p><a href="https://www.acmicpc.net/problem/7568">백준 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용 언어 : <code>python</code></p>
<p>문제에서 <code>두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x &gt; p 그리고 y &gt; q 이라면 우리는 A의 덩치가 B의 덩치보다 &quot;더 크다&quot;고 말한다.</code>라고 했으므로,
(i[0] &lt; j[0] and i[1] &lt; j[1])인 경우 rank를 +1 해준다.</p>
<p>end = &quot; &quot;를 사용하여 여러줄이 아닌 한 줄로 출력되게 하였다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">import sys
n = int(sys.stdin.readline())  # 사람 수 입력받기
data = [list(map(int, sys.stdin.readline().split()))
        for i in range(n)]  # 몸무게 키 입력받기

#  x &gt; p 그리고 y &gt; q 이라면 우리는 A의 덩치가 B의 덩치보다 &quot;더 크다&quot;

for i in data:
    rank = 1

    for j in data:
        if(i[0] &lt; j[0] and i[1] &lt; j[1]):
            rank = rank + 1
    print(rank, end=&quot; &quot;)
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[AI 프로젝트 회고- 1주차]]></title>
            <link>https://velog.io/@pinkpig_21/AI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%9A%8C%EA%B3%A0-1%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@pinkpig_21/AI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%9A%8C%EA%B3%A0-1%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Tue, 07 Jun 2022 10:26:44 GMT</pubDate>
            <description><![CDATA[<h2 id="ai-프로젝트">AI 프로젝트</h2>
<h3 id="📝기간">📝기간</h3>
<p>2022.05.31~ 06.04</p>
<h3 id="역할">역할</h3>
<p>프론트엔드</p>
<h3 id="회고">회고</h3>
<ol start="0">
<li><p>새로운 팀원들과 만남</p>
</li>
<li><p>프로젝트 주제 정하기
 AI로 할 수 있는 서비스가 뭐가 있을까 생각을 하다가 &quot;반려동물&quot;에 대해 서비스를 기획하기로 했습니다!
 서비스 목적 : 반려동물 정보 제공
 TARGET : 반려동믈을 키우는 사람들을 대상
 MAIN 기능</p>
<ul>
<li>MAP API로 동물 병원, 산책로 쉽게 찾아주기<ul>
<li>사진으로 반려동물 종 구분</li>
<li>소통공간으로 질문과 게시글을 통해 정보를 얻을 수 있음.</li>
</ul>
</li>
</ul>
</li>
<li><p>기술 스택 정하기
Redux 와 React-query + recoil 중 어떤 상태관리를 사용해야할지 고민.</p>
<blockquote>
<p>코치님 말씀
상태관리 기술 스택은 프로젝트에 어울리는 것을 골라라!
둘의 특징 고민해보고 차이점, 어떤 부분이 프로젝트에 적합한지 알아본후 적합한 기술스택 선택.
기업에 어필하기 위해서 기술스택 도입 x.
논리적인 이유가 있으면 사용!</p>
</blockquote>
</li>
</ol>
<p>다음주 개발을 시작하면서 필요하면 사용하기!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 더 맵게 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%8D%94-%EB%A7%B5%EA%B2%8C-python</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%8D%94-%EB%A7%B5%EA%B2%8C-python</guid>
            <pubDate>Mon, 06 Jun 2022 05:44:42 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-더-맵게-문제">📢 &quot;더 맵게&quot; 문제</h1>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/42626">프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용언어 : <code>python</code></p>
<p><code>heapq</code> 모듈 사용
<code>heapq.heapify(scoville)</code> : 기존 list를 힙으로 변환
<code>heapq.heappop(scoville)</code> : scoville의 최솟값 반환 및 삭제
<code>len(scoville) == 1</code> and <code>scoville[0] &lt; K</code> 은 더이상 스코빌 지수를 K 이상 만들 수 없는 경우이므로 -1을 return</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">import heapq

def solution(scoville, K):
    heapq.heapify(scoville)
    count = 0
    while scoville[0] &lt; K:
        min = heapq.heappop(scoville)
        min2 = heapq.heappop(scoville)
        result = min + (min2 * 2)
        heapq.heappush(scoville, result)
        count += 1
        if len(scoville) == 1 and scoville[0] &lt; K:
            return -1
    return count</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 숫자 문자열과 영단어 -python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%88%AB%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%98%81%EB%8B%A8%EC%96%B4-python</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%88%AB%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%98%81%EB%8B%A8%EC%96%B4-python</guid>
            <pubDate>Sun, 05 Jun 2022 04:57:14 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-숫자-문자열과-영단어-문제">📢 &quot;숫자 문자열과 영단어&quot; 문제</h1>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/81301">프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용언어 : <code>python</code>
<code>replace</code>를 사용하여 영단어를 해당하는 값으로 바꾸어줌
영단어와 num을 각각 <code>list</code>를 주어 반복문을 돌렸지만 
다른 사람들은 <code>dictionary</code>를 사용하여 <code>key</code>, <code>value</code>로 해결</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">def solution(s):
    num_string = [&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;,
                  &quot;five&quot;, &quot;six&quot;, &quot;seven&quot;, &quot;eight&quot;, &quot;nine&quot;, &quot;zero&quot;]
    num = [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot;, &quot;0&quot;]

    for x, y in zip(num_string, num):
            s = s.replace(x, y)
    answer = int(s)
    return answer</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 주식가격 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9-python</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9-python</guid>
            <pubDate>Sat, 04 Jun 2022 04:37:51 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-주식가격-문제">📢 &quot;주식가격&quot; 문제</h1>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/42584">프로그래머스 문제 링크 </a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용언어 : <code>python</code>
<code>deque</code>의<code>popleft()</code> 함수를 이용</p>
<p>prices[0]를 i에 저장</p>
<p>for문을 이용하여 for문이 반복될 때마다 time +=1을 해주고, 
만약 y가 i보다 작으면 break를 해주었다.</p>
<p>answer.append(time-1)에서 -1을 한 이유가 for문이 i값을 포함하여 돌기 때문이다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">from collections import deque

def solution(prices):
    prices = deque(prices)
    answer= []
    while 1:
        i = prices[0]
        time = 0
        if len(prices) ==  1:
            answer.append(0)
            break
        for y in prices:
            time+=1
            if y &lt; i:
                break

        answer.append(time-1)
        prices.popleft()
    return answer</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스] 프린터 - python]]></title>
            <link>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%94%84%EB%A6%B0%ED%84%B0</link>
            <guid>https://velog.io/@pinkpig_21/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%94%84%EB%A6%B0%ED%84%B0</guid>
            <pubDate>Fri, 03 Jun 2022 11:18:05 GMT</pubDate>
            <description><![CDATA[<h1 id="📢-프린터-문제">📢 &quot;프린터&quot; 문제</h1>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/42587"> 프로그래머스 문제 링크</a></p>
<h2 id="🔎-풀이">🔎 풀이</h2>
<p>사용 언어 : <code>python</code></p>
<p><code>deque</code>를 이용해서 해결</p>
<p>priorities[0] 값이 max가 아닐 경우 <code>append</code>로 맨 뒤로 보낸 후 <code>popleft()</code>로 삭제</p>
<p><code>location</code>이 앞으로 하나씩 이동하므로 -1를 해준다.
<code>location</code> &lt; 0인 경우는 
priorites[0]이 요청한 문서였으나, max값이 아니라 맨뒤로 보낸 경우이다.
이 경우 <code>location</code>은 <code>len(priorites)-1</code>이다.
-1을 하는 이유는 <code>location</code>이 인덱스라고 생각하면된다.</p>
<h2 id="🔎-코드">🔎 코드</h2>
<pre><code class="language-python">from collections import deque


def solution(priorities, location):
    priorities = deque(priorities)
    count = 0
    while 1:
        if priorities[0] == max(priorities):
            count += 1
            priorities.popleft()
            if location == 0:
                break
            else:
                location -= 1
        else:
            priorities.append(priorities[0])
            priorities.popleft()
            location -= 1

        if location &lt; 0:
            location = len(priorities)-1
    return count
</code></pre>
]]></description>
        </item>
    </channel>
</rss>