<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hwanii_00.log</title>
        <link>https://velog.io/</link>
        <description>연세대학교 컴퓨터과학과 석사 과정</description>
        <lastBuildDate>Tue, 26 Mar 2024 05:10:45 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hwanii_00.log</title>
            <url>https://velog.velcdn.com/images/hwanii_00/profile/40ebadb6-edb8-4d7d-8134-de35d28c2fbb/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hwanii_00.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hwanii_00" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Programmers] 최고의 집합]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%B5%9C%EA%B3%A0%EC%9D%98-%EC%A7%91%ED%95%A9</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%B5%9C%EA%B3%A0%EC%9D%98-%EC%A7%91%ED%95%A9</guid>
            <pubDate>Tue, 26 Mar 2024 05:10:45 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-최고의-집합">📌 [Programmers] 최고의 집합</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/7654e969-9653-4eea-9ca4-d24f2fa16335/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/29b1f41c-1d9d-4ea8-978a-bab2fa29f6cf/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(n, s):
    if n &gt; s:
        return [-1]

    initial = s // n
    answer = [initial for _ in range(n)]

    idx = len(answer) - 1
    for _ in range(s % n):
        answer[idx] += 1
        idx -= 1
    return answer</code></pre><blockquote>
<p>n이 s보다 클 경우 각 요소의 값은 0을 가질 수 밖에 업게 되므로 [-1]을 출력한다.
이외의 경우 s // n 값을 각 요소에 초기화해주고 나머지 값은 요소에 1씩 증가시켜주는 방식으로 할당한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 스킬트리]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%8A%A4%ED%82%AC%ED%8A%B8%EB%A6%AC</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%8A%A4%ED%82%AC%ED%8A%B8%EB%A6%AC</guid>
            <pubDate>Tue, 26 Mar 2024 05:04:31 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-스킬트리">📌 [Programmers] 스킬트리</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/49bd1db1-d043-482d-bae8-da78b5ffa058/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/ca453bde-c0ff-4275-aebe-25e7af7c8aa3/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(skill, skill_trees):
    answer = 0
    for skill_tree in skill_trees:
        arr = &#39;&#39;
        for i in skill_tree:
            if i in skill:
                arr += i
        if arr == skill[:len(arr)]:
            answer += 1
    return answer</code></pre><blockquote>
<p>문자열을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 롤케이크 자르기]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC-%EC%9E%90%EB%A5%B4%EA%B8%B0</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC-%EC%9E%90%EB%A5%B4%EA%B8%B0</guid>
            <pubDate>Mon, 25 Mar 2024 06:04:40 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-롤케이크-자르기">📌 [Programmers] 롤케이크 자르기</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/82f2fbf4-113f-4431-ab82-9dc798e05982/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/bf2ab471-fbfd-4018-8520-65beee09532f/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>from collections import Counter

def solution(topping):
    answer = 0
    Dict = Counter(topping)
    sets = set()
    for i in topping:
        sets.add(i)
        Dict[i] -= 1
        if Dict[i] == 0:
            Dict.pop(i)
        if len(sets) == len(Dict):
            answer += 1
    return answer</code></pre><blockquote>
<p>Counter() 함수를 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 기능개발]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C</guid>
            <pubDate>Mon, 25 Mar 2024 05:59:46 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-기능개발">📌 [Programmers] 기능개발</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/2e7d4884-6ca2-48cb-b0d7-e1462b010fdb/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/1ea31414-c060-4452-9f3e-7c1570314681/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(progresses, speeds):
    answer = []
    cnt = 0
    time = 0
    while progresses:
        if progresses[0] + time * speeds[0] &gt;= 100:
            progresses.pop(0)
            speeds.pop(0)
            cnt += 1
        else:
            if cnt &gt; 0:
                answer.append(cnt)
                cnt = 0
            time += 1
    answer.append(cnt)
    return answer</code></pre><blockquote>
<p>progresses의 첫 번째 항이 100을 넘을 때 까지 time을 1씩 증가시킨다.
progresses의 첫 번째 항이 100을 넘을 경우 그 항을 제거해주고 cnt를 1 증가시킨다.
progresses의 첫 번째 항이 100이 넘지 않을 경우 증가한 값 만큼의 cnt를 answer에 추가한 후 cnt를 0으로 설정하고 앞의 과정을 반복한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 땅따먹기]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%95%85%EB%94%B0%EB%A8%B9%EA%B8%B0</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%95%85%EB%94%B0%EB%A8%B9%EA%B8%B0</guid>
            <pubDate>Mon, 25 Mar 2024 05:53:54 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-땅따먹기">📌 [Programmers] 땅따먹기</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/b117b5c9-82a7-4f8e-9fa5-fe83dc9743d0/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/a0b6ecbf-d7a6-4a7f-8291-58bd498bae75/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(land):
    answer = 0
    for i in range(1, len(land)):
        for j in range(4):
            if j == 0:
                land[i][j] += max(land[i-1][1], land[i-1][2], land[i-1][3])
            elif j == 1:
                land[i][j] += max(land[i-1][0], land[i-1][2], land[i-1][3])
            elif j == 2:
                land[i][j] += max(land[i-1][0], land[i-1][1], land[i-1][3])
            else:
                land[i][j] += max(land[i-1][0], land[i-1][1], land[i-1][2])

    return max(land[-1])</code></pre><blockquote>
<p>동적 계획법 알고리즘을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 방문 길이]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%B0%A9%EB%AC%B8-%EA%B8%B8%EC%9D%B4</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%B0%A9%EB%AC%B8-%EA%B8%B8%EC%9D%B4</guid>
            <pubDate>Sun, 24 Mar 2024 05:18:22 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-방문-길이">📌 [Programmers] 방문 길이</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/4e7be234-a08b-44f0-a507-8832cb2a2201/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/d9ede8bd-bb17-435f-bea8-6ce87746a0d8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/23daed5f-64e9-47b6-a756-b1a0619e453d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/46876414-3ed8-48b5-9418-dc5d65eb9f6d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/a5222126-e2ef-482c-b337-a93ce19bc4b2/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/b888df26-a850-4f9a-b135-6171870987df/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(dirs):

    UDRL = {&#39;U&#39;:(1,0), &#39;D&#39;:(-1,0), &#39;R&#39;:(0,1), &#39;L&#39;:(0,-1)}
    y, x = 0, 0
    sets = set()

    for i in dirs:
        dy, dx = UDRL[i]
        ny = y+dy
        nx = x+dx
        if -5&lt;=ny&lt;=5 and -5&lt;=nx&lt;=5:
            sets.add(((ny,nx), (y,x)))
            sets.add(((y,x), (ny,nx)))
            y = ny
            x = nx
    return len(sets) // 2</code></pre><blockquote>
<p>자료구조 딕셔너리와 집합을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 주식가격]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9</guid>
            <pubDate>Sun, 24 Mar 2024 05:08:50 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-주식가격">📌 [Programmers] 주식가격</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/1a766050-f05e-49cc-af4d-bb3cdfe6ed3a/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/499ce837-f2ee-4525-9a81-8cd97a28a4a7/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(prices):
    answer = [0] * len(prices)

    for i in range(len(prices)):
        cnt = 0
        for j in range(i+1, len(prices)):
            if prices[i] &lt;= prices[j]:
                cnt += 1
            else:
                cnt += 1
                break
        answer[i] = cnt
    return answer</code></pre><blockquote>
<p>answer을 prices 값의 수 만큼 0으로 초기화시킨 후 특정 인덱스의 값보다 연속적으로 큰 수만큼 cnt를 올려 answer의 인덱스에 초기화 한다.
자신의 값보다 큰 수를 발견하더라도 cnt를 1 증가시키고 중단해야한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 단어 변환]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%8B%A8%EC%96%B4-%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%8B%A8%EC%96%B4-%EB%B3%80%ED%99%98</guid>
            <pubDate>Sun, 24 Mar 2024 05:01:29 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-단어-변환">📌 [Programmers] 단어 변환</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/57d4ffaa-7969-4aea-83ec-68c574fac738/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/e09e75db-7e88-4aae-8cdc-b26ae031a0cd/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>from collections import deque

def solution(begin, target, words):
    if target not in words:
        return 0

    return BFS(begin, target, words)

def BFS(begin, target, words):
    queue = deque()
    queue.append((begin, 0))
    while queue:
        now, step = queue.popleft()

        if now == target:
            return step

        for word in words:
            cnt = 0
            for i in range(len(now)):
                if now[i] != word[i]:
                    cnt += 1
            if cnt == 1:
                queue.append((word, step+1))</code></pre><blockquote>
<p>target 단어가 words에 없을 경우 0을 리턴한다.
target 단어가 words에 있을 경우 BFS를 활용하여 문제를 해결할 수 있다.
begin이 target까지 도달하는 최단거리를 구하는 문제이다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 더 맵게]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%8D%94-%EB%A7%B5%EA%B2%8C</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%8D%94-%EB%A7%B5%EA%B2%8C</guid>
            <pubDate>Sat, 23 Mar 2024 05:15:08 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-더-맵게">📌 [Programmers] 더 맵게</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/23bf9f2a-8441-4d00-a0b8-f278f3bb45e6/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/242dbeae-1b1f-4548-94a5-aaeffe7b7825/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(scoville, K):
    import heapq

    answer = 0
    heapq.heapify(scoville)

    while scoville:
        if scoville[0] &gt;= K:
            return answer
        if len(scoville) == 1:
            return -1
        new = heapq.heappop(scoville) + heapq.heappop(scoville) * 2
        heapq.heappush(scoville, new)
        answer += 1</code></pre><blockquote>
<p>자료 구조 heap을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 뒤에 있는 큰 수 찾기]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%92%A4%EC%97%90-%EC%9E%88%EB%8A%94-%ED%81%B0-%EC%88%98-%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%92%A4%EC%97%90-%EC%9E%88%EB%8A%94-%ED%81%B0-%EC%88%98-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Sat, 23 Mar 2024 05:09:44 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-뒤에-있는-큰-수-찾기">📌 [Programmers] 뒤에 있는 큰 수 찾기</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/668ef413-833c-4570-9914-e696daa8eb0b/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/9a05b9da-5b16-4d8f-9a4c-d775acc3454f/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(numbers):
    stk = []
    answer = [-1] * len(numbers)

    for i in range(len(numbers)): 
        while stk and numbers[stk[-1]] &lt; numbers[i]:
            answer[stk.pop()] = numbers[i]
        stk.append(i)
    return answer</code></pre><blockquote>
<p>자료 구조 스택을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 게임 맵 최단거리]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EA%B2%8C%EC%9E%84-%EB%A7%B5-%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EA%B2%8C%EC%9E%84-%EB%A7%B5-%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC</guid>
            <pubDate>Sat, 23 Mar 2024 04:58:39 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-게임-맵-최단거리">📌 [Programmers] 게임 맵 최단거리</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/660dc1df-09c7-4394-995d-aadf463f6882/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/72f954ac-10d2-4994-86ab-451b18d27bf0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/96f2c117-60df-40d1-8c12-759dc7546db4/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/32a96cd7-0440-4dc2-910d-bdfbc96d0273/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>from collections import deque

dx = [0,0,-1,1]
dy = [1,-1,0,0]

def BFS(x, y, maps):
    queue = deque()
    queue.append((x,y))
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x+dx[i]
            ny = y+dy[i]
            if 0&lt;= nx&lt;len(maps) and 0&lt;=ny&lt;len(maps[0]) and maps[nx][ny] == 1:
                maps[nx][ny] = maps[x][y] + 1
                queue.append((nx,ny))

def solution(maps):
    BFS(0, 0, maps)
    if maps[-1][-1] == 1:
        return -1
    else:
        return maps[-1][-1]</code></pre><blockquote>
<p>BFS를 활용하여 최단거리 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 모음사전]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%AA%A8%EC%9D%8C%EC%82%AC%EC%A0%84</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%AA%A8%EC%9D%8C%EC%82%AC%EC%A0%84</guid>
            <pubDate>Fri, 22 Mar 2024 03:06:37 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-모음사전">📌 [Programmers] 모음사전</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/6f9e44ab-4664-4910-a4c8-1c3beedb9039/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/88fe1c98-2028-47a0-b615-ce7d24a51339/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(word):
    from itertools import product

    words = []
    for i in range(6):
        c = product([&#39;A&#39;, &#39;E&#39;, &#39;I&#39;, &#39;O&#39;, &#39;U&#39;], repeat=i)
        for i in c:
            words.append(&#39;&#39;.join(i))

    words.sort()
    return words.index(word)</code></pre><blockquote>
<p>product() 함수를 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 야근 지수]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%95%BC%EA%B7%BC-%EC%A7%80%EC%88%98</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%95%BC%EA%B7%BC-%EC%A7%80%EC%88%98</guid>
            <pubDate>Fri, 22 Mar 2024 03:01:07 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-야근-지수">📌 [Programmers] 야근 지수</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/f3e40b22-cb17-4b95-b3a6-e43e5593b37b/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/482d6acd-66c8-4db8-a29c-2b401082342d/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(n, works):
    import heapq

    if n &gt;= sum(works):
        return 0

    works = [-w for w in works]
    heapq.heapify(works)

    for _ in range(n):
        i = heapq.heappop(works)
        i += 1
        heapq.heappush(works, i)
    return sum([w ** 2 for w in works])</code></pre><blockquote>
<p>여러번의 반복동안 가장 큰 수에 연산을 수행해야 할 경우 heapq.heapify()를 다음과 같이 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] [3차] n진수 게임]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-3%EC%B0%A8-n%EC%A7%84%EC%88%98-%EA%B2%8C%EC%9E%84</link>
            <guid>https://velog.io/@hwanii_00/Programmers-3%EC%B0%A8-n%EC%A7%84%EC%88%98-%EA%B2%8C%EC%9E%84</guid>
            <pubDate>Fri, 22 Mar 2024 02:53:20 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-3차-n진수-게임">📌 [Programmers] [3차] n진수 게임</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/ebaa5c46-9243-4573-b9e8-8226477ccacb/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/0aea0245-b11f-461b-88ab-699d9f2375f0/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/5f4c0eff-234b-44a6-b87c-2678e5102de6/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def convert(k, base):
    arr = &#39;0123456789ABCDEF&#39;
    q, r = divmod(k, base)
    if q == 0:
        return arr[r]
    else:
        return convert(q, base) + arr[r]

def solution(n, t, m, p):
    answer = &#39;&#39;
    number = []
    for i in range(t*m):
        cnv = convert(i, n)
        for j in cnv:
            number.append(j)

    for i in range(p-1, t*m, m):
        answer += number[i]
    return answer</code></pre><blockquote>
<p>convert() 함수를 이용해 모든 수를 n진수로 변형한 뒤 튜브가 말해야하는 수만 따로 모아서 출력한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] [3차] 압축]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-3%EC%B0%A8-%EC%95%95%EC%B6%95</link>
            <guid>https://velog.io/@hwanii_00/Programmers-3%EC%B0%A8-%EC%95%95%EC%B6%95</guid>
            <pubDate>Thu, 21 Mar 2024 02:46:39 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-3차-압축">📌 [Programmers] [3차] 압축</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/c40a0cd4-8e4b-4aae-bdce-39fbf6f011b9/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/c13fa0cc-29c0-4649-bff6-fcf061fa8b60/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/65909a87-ee29-4160-9982-60114e7e42e6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/160dbbd7-62d0-4d33-8e04-2a3f3c9ce2cb/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/e3b9ea12-ebcb-44b7-a5d1-66c7b0ee9be0/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(msg):
    answer = []
    Dict = {}
    # 딕셔너리에 알파벳 저장
    for i in range(1, 27):
        Dict[chr(i+64)] = i

    while True:
        if msg in Dict:
            answer.append(Dict[msg])
            break
        for i in range(1, len(msg)):
            if msg[:i+1] not in Dict:
                answer.append(Dict[msg[:i]])
                Dict[msg[:i+1]] = len(Dict) + 1
                msg = msg[i:]
                break
    return answer</code></pre><blockquote>
<p>알파벳을 딕셔너리에 저장하는 방법을 배울 수 있었다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 네트워크]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC</guid>
            <pubDate>Thu, 21 Mar 2024 02:35:58 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-네트워크">📌 [Programmers] 네트워크</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/1b6ff3b7-508d-4af6-8199-ff19e0f09b18/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/a4486c4d-0113-46ac-8ee8-ea1051ca6a33/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def DFS(i, n, computers, visited):
    visited[i] = 1
    for j in range(n):
        if visited[j] == 0 and computers[i][j] == 1:
            DFS(j, n, computers, visited)

def solution(n, computers):
    answer = 0
    visited = [0] * n
    for i in range(n):
        if visited[i] == 0:
            DFS(i, n, computers, visited)
            answer += 1
    return answer</code></pre><blockquote>
<p>DFS를 활용해 다음 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 이중우선순위큐]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%9D%B4%EC%A4%91%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%ED%81%90</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%9D%B4%EC%A4%91%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%ED%81%90</guid>
            <pubDate>Thu, 21 Mar 2024 02:22:13 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-이중우선순위큐">📌 [Programmers] 이중우선순위큐</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/48b0ae9d-ba89-41f9-a9cb-3c71e9ca69e7/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/d54bfff0-2f87-498d-abcf-fa72bc15a405/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(operations):
    import heapq
    heap = []
    max_heap =[]
    for i in operations:
        i = i.split()
        if i[0] == &#39;I&#39;:
            heapq.heappush(heap, int(i[1]))
            heapq.heappush(max_heap, (int(i[1])*-1, int(i[1])))
        else:
            if not heap:
                pass
            elif i[1] == &#39;1&#39;:
                num = max(heap)
                heap.remove(num)
                heapq.heappop(max_heap)
            else:
                num = max(max_heap)
                max_heap.remove(num)
                heapq.heappop(heap)
    if heap:
        return [heapq.heappop(max_heap)[1], heapq.heappop(heap)]
    else:
        return [0,0]</code></pre><blockquote>
<p>heap 자료구조는 최소힙을 기본으로 구성되어있기 때문에 큰 수를 빼는 것을 고려하여 -1을 곱한 값을 우선순위로 저장할 max_heap도 heap과 함께 준비한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 정수 삼각형]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%EC%A0%95%EC%88%98-%EC%82%BC%EA%B0%81%ED%98%95</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%EC%A0%95%EC%88%98-%EC%82%BC%EA%B0%81%ED%98%95</guid>
            <pubDate>Wed, 20 Mar 2024 01:30:46 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-정수-삼각형">📌 [Programmers] 정수 삼각형</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/af1bd0e0-1566-4925-8ae3-f4919068e69a/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/7e0af281-397a-4dd8-9f50-a3db8cc17125/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(triangle):
    answer = 0
    for i in range(1, len(triangle)):
        for j in range(i+1):
            if j == 0:
                triangle[i][j] += triangle[i-1][j]
            elif j == i:
                triangle[i][j] += triangle[i-1][j-1]
            else:
                triangle[i][j] += max(triangle[i-1][j], triangle[i-1][j-1])

    return max(triangle[-1])</code></pre><blockquote>
<p>동적계획법을 활용하여 문제를 해결할 수 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] k진수에서 소수 개수 구하기]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-k%EC%A7%84%EC%88%98%EC%97%90%EC%84%9C-%EC%86%8C%EC%88%98-%EA%B0%9C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@hwanii_00/Programmers-k%EC%A7%84%EC%88%98%EC%97%90%EC%84%9C-%EC%86%8C%EC%88%98-%EA%B0%9C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 20 Mar 2024 01:23:58 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-k진수에서-소수-개수-구하기">📌 [Programmers] k진수에서 소수 개수 구하기</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/2582a465-27b9-4c13-96a1-e626ecd698e6/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/5e25a082-5b31-48c0-8904-ff45cb928d53/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(n, k):
    answer = 0
    num = &#39;&#39;
    # k진수로 변환하는 방법
    while n &gt; 0:
        num = str(n % k) + num
        n = n // k
    num = num.split(&#39;0&#39;)

    for i in num:
        if i != &#39;&#39;:
            if int(i) &lt; 2:
                continue
            else:
                check = True
                # 소수 확인
                for j in range(2, int(int(i)**0.5)+1):
                    if int(i) % j == 0:
                        check = False
                        break
                if check:
                    answer += 1
    return answer</code></pre><blockquote>
<p>해당 문제를 통해 <strong>k진수로 변환하는 방법</strong>과 <strong>소수를 확인</strong>하는 가장 효율적인 방법인 &#39;에라토스테네스의 체&#39;를 배울 수 있었다.</p>
</blockquote>
<ol>
<li>특정 수를 k진수로 변환하기 위해서 특정 수에서 k를 나눈 나머지를 기존 수의 앞으로 붙여주는 수행을 특정 수가 0이 될 때까지 반복해준다.</li>
<li>어떤 수가 소수가 아니라면, 그 수의 최소 소인수는 그 수의 제곱근 이하에 존재한다는 사실을 바탕으로 제곱근까지만 확인하여 나누어 떨어지는 수가 있는지를 확인한다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Programmers] 타겟 넘버]]></title>
            <link>https://velog.io/@hwanii_00/Programmers-%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84</link>
            <guid>https://velog.io/@hwanii_00/Programmers-%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84</guid>
            <pubDate>Wed, 20 Mar 2024 01:23:18 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-programmers-타겟-넘버">📌 [Programmers] 타겟 넘버</h1>
<h2 id="📖-문제">📖 문제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/61449f15-a1c0-4741-897c-b25d89d353cb/image.png" alt=""></p>
<h2 id="📖-예제">📖 예제</h2>
<p><img src="https://velog.velcdn.com/images/hwanii_00/post/2821d4ab-834c-4f18-b8c0-f285cc76f0c7/image.png" alt=""></p>
<h2 id="📖-풀이">📖 풀이</h2>
<pre><code>def solution(numbers, target):
    answer = 0
    leaves = [0]
    for num in numbers:
        term = []
        for i in leaves:
            term.append(i + num)
            term.append(i - num)
        leaves = term
    for i in leaves:
        if i == target:
            answer += 1
    return answer</code></pre><blockquote>
<p>입력 배열 numbers에서 값을 하나씩 불러와 기존에 저장되어 있는 배열 leaves의 값들에 +와 -연산을 수행한 뒤 leaves를 새롭게 초기화해준다.</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>