<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>성수의 프로그래밍 극복 기록</title>
    <link>https://voidmelody.tistory.com/</link>
    <description>취뽀완료</description>
    <language>ko</language>
    <pubDate>Sun, 12 Apr 2026 14:50:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>void_melody</managingEditor>
    <image>
      <title>성수의 프로그래밍 극복 기록</title>
      <url>https://tistory1.daumcdn.net/tistory/4703992/attach/8e7f8b6f54bb4d789391ae70d41b5f41</url>
      <link>https://voidmelody.tistory.com</link>
    </image>
    <item>
      <title>PCCP 모의고사 2회 3번 문제</title>
      <link>https://voidmelody.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/15009/lessons/121689&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/15009/lessons/121689&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1714574762009&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/15009/lessons/121689&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPSZUX/hyVVDhpCFZ/sfYPpJll1QMljLjFgORMTk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/blcEbk/hyVZkgbVJO/uQnh4fBv4R2I2EHcNULS90/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/15009/lessons/121689&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/15009/lessons/121689&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPSZUX/hyVVDhpCFZ/sfYPpJll1QMljLjFgORMTk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/blcEbk/hyVZkgbVJO/uQnh4fBv4R2I2EHcNULS90/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1714574781213&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque

def solution(menu, order, k):
    answer = -1
    record = []
    q = deque()
    start = 0
    drink_start = 0
    end = 0
    for o in order:
        q.append((o, menu[o]))
    
    while q:
        o, time = q.popleft()
        if start &amp;gt; drink_start:
            drink_start = start
        end = drink_start + time
        record.append((start, drink_start, end))
        start += k
        drink_start = end
    
    candidate = [a for a,b,c in record]
    dic = {}
    for a,b,c in record:
        dic[a] = dic.get(a, 0) + 1
        dic[c] = dic.get(c, 0) + 1
    
    for t in candidate:
        cnt = 0
        for i in range(len(record)):
            r = record[i]
            if t &amp;lt; r[0]:
                break
            if r[0] &amp;lt;= t &amp;lt;= r[2]:
                cnt += 1
        if dic[t] != 1:
            cnt = cnt - dic[t] + 1
        answer = max(answer, cnt)
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답이긴한데. 효율적인 코드는 아닌 것 같다..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 구현에 충실하게 해서 했는데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 방법도 찾아봐야겟다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 이중 반복문에서 계속 시간 초과가 떠서 그냥 딕셔너리로 최대한 해결했다.&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/210</guid>
      <comments>https://voidmelody.tistory.com/210#entry210comment</comments>
      <pubDate>Wed, 1 May 2024 23:47:22 +0900</pubDate>
    </item>
    <item>
      <title>조합 사용 (프로그래머스 소수 찾기)</title>
      <link>https://voidmelody.tistory.com/209</link>
      <description>&lt;pre id=&quot;code_1714027414014&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import permutations
def checkPrime(n):
    if n &amp;lt; 2:
        return False
    
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
        

def solution(numbers):
    answer = []
    numbers = list(numbers)
    num = []
    candi = set()
    for i in range(1, len(numbers) + 1):
        num.append(list(permutations(numbers, i)))
    
    for x in num:
        for y in x:
            candi.add(int(''.join(y)))
    
    for c in candi:
        if checkPrime(c):
            answer.append(c)
    return len(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;permutations는 tuple을 반환하므로 리스트로 변경해서..!&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/209</guid>
      <comments>https://voidmelody.tistory.com/209#entry209comment</comments>
      <pubDate>Thu, 25 Apr 2024 15:44:07 +0900</pubDate>
    </item>
    <item>
      <title>구간합 리스트 빨리 구하기</title>
      <link>https://voidmelody.tistory.com/208</link>
      <description>&lt;pre id=&quot;code_1712024552666&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n, m = map(int, input().split())
numbers = list(map(int, input().split()))

s = [0 for _ in range(n+1)]
for i in range(1, n+1):
    for j in range(0, i):
        s[i] += numbers[j]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 것을 아래로 변경한다.&lt;/p&gt;
&lt;pre id=&quot;code_1712024570221&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n, m = map(int, input().split())
numbers = list(map(int, input().split()))

for i in range(n-1):
    numbers[i+1] += numbers[i]
s = [0] + numbers&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/208</guid>
      <comments>https://voidmelody.tistory.com/208#entry208comment</comments>
      <pubDate>Tue, 2 Apr 2024 11:23:23 +0900</pubDate>
    </item>
    <item>
      <title>파이썬에서의 우선 순위 큐(힙)</title>
      <link>https://voidmelody.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1927&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1927&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1711174576195&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1927번: 최소 힙&quot; data-og-description=&quot;첫째 줄에 연산의 개수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1927&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1927&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dgYU4v/hyVDwIuIPb/hYjQLTBETfSrsc54xzK9X1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1927&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1927&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dgYU4v/hyVDwIuIPb/hYjQLTBETfSrsc54xzK9X1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1927번: 최소 힙&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 연산의 개수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 아 얘 딱 우선순위 큐 써야겠네 싶었지만 파이썬에서의 우선 순위큐는 어떻게 제공하는지 몰라서 찾아봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1711174683993&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import heapq

heap_q = []

# push
heapq.heappush(heap_q, 3)
heapq.heappush(heap_q, 10)
heapq.heappush(heap_q, 1)
heapq.heappush(heap_q, 0)
heapq.heappush(heap_q, 4)

# pop
heapq.heappop(heap_q)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 인자로 넘겨줘야한다는 걸 기억하자.&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/207</guid>
      <comments>https://voidmelody.tistory.com/207#entry207comment</comments>
      <pubDate>Sat, 23 Mar 2024 15:18:20 +0900</pubDate>
    </item>
    <item>
      <title>리스트 복사 헷갈리는 부분</title>
      <link>https://voidmelody.tistory.com/206</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래머스 문제를 풀다가 다음과 같은 현상이 발생했다.&lt;/p&gt;
&lt;pre id=&quot;code_1710123899819&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(elements):
    s = set()
    l = len(elements)
    
    for i in range(1, l):
        e = elements
        for j in range(0, i-1):
            e.append(elements[j])	# e에 추가를 했는데 elements에도 추가가 일어남.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 e라는 새로운 배열을 만들어서 안에 elements를 넣는 작업, 즉 값 복사를 하고 싶었는데&lt;br /&gt;파이썬에서는 값 복사가 아닌 메모리를 공유하게 된다.&amp;nbsp;&lt;br /&gt;그렇기에 e에 추가했는데 elements에도 추가가 일어난 것이다.&lt;br /&gt;&lt;br /&gt;그러면 어떻게 해야할까? 방법은 3가지 정도이다.&lt;/p&gt;
&lt;pre id=&quot;code_1710123970141&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;e = []
for c in elements:
	e.append(c)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 그냥 하나씩 넣어준다거나..&lt;/p&gt;
&lt;pre id=&quot;code_1710123988703&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;e = elements[:]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬라이싱을 통해 새로 생성하거나&lt;/p&gt;
&lt;pre id=&quot;code_1710124011609&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;e = elements.copy()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;값을 복사해서 새로운 리스트를 만드는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의하도록 하자. 파이썬이라고 다 되겄지 하고 무지성으로 했다..&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/206</guid>
      <comments>https://voidmelody.tistory.com/206#entry206comment</comments>
      <pubDate>Mon, 11 Mar 2024 11:27:44 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 이진 변환 반복하기</title>
      <link>https://voidmelody.tistory.com/205</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/70129&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/70129&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709861017182&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/70129&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BYx2t/hyVxC9nXJQ/Cg63Pd2zIv9Vq11skXX2D0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/luQpJ/hyVxwOR6nD/y8QQIaFgqGeg0fR88QBZPk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/70129&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/70129&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BYx2t/hyVxC9nXJQ/Cg63Pd2zIv9Vq11skXX2D0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/luQpJ/hyVxwOR6nD/y8QQIaFgqGeg0fR88QBZPk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python에서는 10진수 -&amp;gt; 2진수 변환하는 함수를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bin(n)을 쓰면 된다. 여기서 주의할 점은 앞에, '0b'가 붙어서 나온다. 그렇기에 slice를 해줘야한다.&lt;/p&gt;
&lt;pre id=&quot;code_1709861158558&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 나의 풀이
def solution(s):
    answer = []
    count = 0
    zero = 0
    while s != &quot;1&quot;:
        t = &quot;&quot;
        for e in s:
            if e != '0':
                t += e
            else:
                zero += 1
        length = len(t)
        s = bin(length).replace(&quot;0b&quot;, &quot;&quot;)
        count += 1
    answer.append(count)
    answer.append(zero)
    return answer
        
# 모범 답안
def solution(s):
    a, b = 0, 0
    while s != '1':
        a += 1
        num = s.count('1')
        b += len(s) - num
        s = bin(num)[2:]
    return [a, b]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/205</guid>
      <comments>https://voidmelody.tistory.com/205#entry205comment</comments>
      <pubDate>Fri, 8 Mar 2024 10:26:21 +0900</pubDate>
    </item>
    <item>
      <title>2/27</title>
      <link>https://voidmelody.tistory.com/204</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. python에는 ord(char c) 함수가 있다. 해당 문자의 아스키 코드를 반환하는 것이다.&amp;nbsp;&lt;br /&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10808&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/10808&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709019213020&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10808번: 알파벳 개수&quot; data-og-description=&quot;단어에 포함되어 있는 a의 개수, b의 개수, &amp;hellip;, z의 개수를 공백으로 구분해서 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10808&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10808&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IIn3T/hyVqqPBnGH/HiESjdIEiy0QiK8DhktN5K/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10808&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10808&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IIn3T/hyVqqPBnGH/HiESjdIEiy0QiK8DhktN5K/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;10808번: 알파벳 개수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;단어에 포함되어 있는 a의 개수, b의 개수, &amp;hellip;, z의 개수를 공백으로 구분해서 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제 등에 유용. 알파벳의 갯수를 구하거나 count를 할 때, 유용.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. list에서 해당 원소가 몇 개 존재하는지 리턴하는 count() 함수가 존재한다.&lt;br /&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10807&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/10807&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709021482557&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10807번: 개수 세기&quot; data-og-description=&quot;첫째 줄에 정수의 개수 N(1 &amp;le; N &amp;le; 100)이&amp;nbsp;주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다.&amp;nbsp;셋째 줄에는 찾으려고 하는 정수 v가 주어진다.&amp;nbsp;입력으로 주어지는 정수와 v는 -100보다 크거&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10807&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10807&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cNiBwu/hyVqhLVO40/riV0aZ97X6Q2TldkftCCuK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10807&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10807&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cNiBwu/hyVqhLVO40/riV0aZ97X6Q2TldkftCCuK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;10807번: 개수 세기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 정수의 개수 N(1 &amp;le; N &amp;le; 100)이&amp;nbsp;주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다.&amp;nbsp;셋째 줄에는 찾으려고 하는 정수 v가 주어진다.&amp;nbsp;입력으로 주어지는 정수와 v는 -100보다 크거&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;target = 5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;l = [ ,.. ]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;l.count(target) 하면 된다&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/204</guid>
      <comments>https://voidmelody.tistory.com/204#entry204comment</comments>
      <pubDate>Tue, 27 Feb 2024 17:12:10 +0900</pubDate>
    </item>
    <item>
      <title>시작 - 2/27</title>
      <link>https://voidmelody.tistory.com/203</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표로 하는 코딩 테스트의 공부량은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. barking dog의 0x13 이분탐색까지의 문제집 및 강의 복습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 프로그래머스 lv 2까지 다 풀기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 프로그래머스 역량자격증 (PCCP) 한번 도전하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬으로 새로 준비하는 만큼, 풀며 정리하는 식으로 마무리 예정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2024 상반기 취준 준비 코테</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/203</guid>
      <comments>https://voidmelody.tistory.com/203#entry203comment</comments>
      <pubDate>Tue, 27 Feb 2024 16:32:33 +0900</pubDate>
    </item>
    <item>
      <title>백엔드 데브코스 3, 4개월차 회고 - 최종 프로젝트 전 마음가짐</title>
      <link>https://voidmelody.tistory.com/202</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CPStK/btsECu8dhpy/k4kADbGblb6CAgh7JwsEs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CPStK/btsECu8dhpy/k4kADbGblb6CAgh7JwsEs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CPStK/btsECu8dhpy/k4kADbGblb6CAgh7JwsEs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCPStK%2FbtsECu8dhpy%2Fk4kADbGblb6CAgh7JwsEs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;838&quot; height=&quot;583&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회고를 11월 중순에 쓰고 어느 덧 시간이 꽤 흘렀다.&lt;br /&gt;시간은 흐르고 흘러, 백엔드 팀원들과 한달 정도의 프로젝트를 마쳤고 최종 프로젝트에 돌입했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 동안의 어떤 활동과 사고과정을 거쳤는지, 그리고 어떤 계획인지를 말해볼까 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어떤 활동을 했는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 기간에는 백엔드 팀원들과의 프로젝트가 주된 활동이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신경쓸 요소들이 매우 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 ci/cd 경험은 전무했기에 맛보기를 할 수 있는 좋은 기회였고, 도메인 분석도 꽤 까다로웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 스마트 스토어에 관한 클론 코딩이었고, 해당 주제는 확실히 여러 도메인이 깊게 얽혀있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 나는 어쩌다보니 맡은 도메인들이 약간 독립적인 도메인들이 많다보니 다른 팀원들이 사용할 함수나 로직들을 만드는, &lt;br /&gt;어찌보면 CRUD에 많이 치중되게 역할을 담당하게 되었다.&lt;br /&gt;그래서 나는 어쩌면 다른 팀원들에 비해서는 시간적 여유가 조금은 있었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 팀원들 회의할 때 조금 더 비록 기능 구현에 참여하지는 않았지만 어떻게 로직을 작성할지 내 나름대로 고민도 해보고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하는 기술인 querydsl이나 검증 부분에 대해서도 더 공부를 진행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 나는 이번 프로젝트에서 무언갈 제대로 만든다! 라는 목표보다는, 많이 실패와 도전을 겪었으면 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나에게 있어 가장 중요하면서도 목표로 가져가야할 지점은 최종 프로젝트라고 판단했기에,&amp;nbsp;&lt;br /&gt;해당 프로젝트에서는 어떤 문제들을 겪었고 이를 다음 프로젝트에서는 어떻게 해결하는 방향으로 가야할지를 많이 고민해봤던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당시 내가 정리한 문제와 해결 부분들의 일부이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연관 관계 매핑이 생각보다 이점을 주는 부분도 있지만, &lt;br /&gt;양방향을 쓸 때나 OneToMany 등을 쓸 때 어느정도 문제가 되는 부분도 엄연히 존재했다. &lt;br /&gt;그렇기에 이에 대해서는 팀원들과 충분한 합의가 있어야 한다.&amp;nbsp;&lt;br /&gt;나의 개인적인 의견은 단방향 매핑이면서 객체 안의 column이 많지 않다면 써도 괜찮을 것 같고&amp;nbsp;&lt;br /&gt;그렇지 않다면 그냥 id로 저장을 하고 sql로 이를 처리하는 것이 어떨까 싶다.&lt;/li&gt;
&lt;li&gt;생각보다 우리에게 주어지는 시간이 많지가 않다.&lt;br /&gt;스마트 스토어의 경우 생각보다 단순 판매 / 등록말고도 너무나 많은 도메인들과 연관되어 있었다.&amp;nbsp;&lt;br /&gt;db 테이블의 수도 많아졌고 기능끼리 연관이 너무 많았다.&lt;br /&gt;그렇기에 다음 프로젝트에서는 도메인의 핵심 코어 기능 한 두 개를 메인으로 내세우는 식으로 진행하면 어떨까 싶다.&lt;br /&gt;그렇다면 테이블의 수도 적어지고, 그러면서도 강조할 부분들이 있지 않을까 싶다.&lt;/li&gt;
&lt;li&gt;최종 프로젝트는 결국엔 우리가 취업 준비 과정에서 쓸 포폴이다.&lt;br /&gt;그렇다면 어떤 점을 강조하는 것이 좋을까?&lt;br /&gt;CI/CD 구축 과정?&lt;br /&gt;채팅 기능?&lt;br /&gt;크롤링?&lt;br /&gt;동시성 이슈?&amp;nbsp;&lt;br /&gt;여러 가지 있을 수 있다. 이러한 부분을 팀원들과 고민하면서 주제를 정해야 할 듯 싶다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;잠깐의 방황과 고민&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 조금 개인적인 부분이긴 한데.. 어느 순간 개발이 재미가 없어지기 시작했다.&lt;br /&gt;코딩의 시작은 물론 나는 대학 학과 때문에 시작했지만, 내가 코딩에 재미를 전혀 느끼지 못하고 의무적으로 공부했다면&lt;br /&gt;금방 1년 만에 나가떨어졌을 것이다.&lt;br /&gt;그럼에도 지금 몇 년째 공부를 하고 있다. 이걸 보면 나는 개발을 아예 싫어한 사람은 분명히 아니었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 어느 순간부터 취업을 목표로 코딩을 공부한다라는 관점에서 공부를 진행하다보니 점점 지쳐갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 수험생활을 하는 기분이랄까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 수능 공부하면서 분명히 해당 생활이 그리 좋지는 않다라는 걸 느꼈음에도 말이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 주위에서 나와 같은 전공이지만 개발을 살리지 않고도 잘 취업을 하는 모습들을 보며, 내가 왜 개발 공부를 시작했는지 다시 성찰해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은 간단했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 시작한 이유는 개발 실력을 쌓고 싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 공부할수록 할만했다. 그리고 무언가를 만드는 것도 꽤 재밌었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 그렇다고 난 평생 공부하고 경쟁할 자신은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사고를 명확하게&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;살면서 내가 잘한 행동 중 하나를 꼽아보라면,&amp;nbsp;&lt;br /&gt;내 주위에 잘난 사람들을 많이 있는 환경에 들어갔다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고민이 생겼을 때, 조언을 구할지 말지 고민을 많이 했지만 근 한 달간 먼저 연락해 밥 한 끼 하면서 이야기를 많이 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화 과정을 통해, '세상이 좋다고 말하는 것' 과 '내가 좋다고 생각하는 것'을 어느정도 구분할 수 있게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취업을 어느 방향으로 할지도, 그리고 어떻게 준비해나갈지도 명확히 정해졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 내가 내 개인 비밀 블로그에만 적었기에 비밀로 하겠지만..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 프로젝트는 내 100% 열정을 다 쏟아내볼 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 프론트 팀원들과 회의를 진행하면서 기획을 하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 좋은 팀원들을 만나 많이 성장하고 발전하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같이 프로젝트 진행하는 팀원들에게도 고맙다는 말 전하고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 2023년 하반기는 나에게 있어 데브코스의 해였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 공간과 장소는 좋은 사람들로부터 온다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 곳에 있는 사람들은 다들 본인만의 비전이 있고, 열정이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 나도 많이 긍정적인 영향을 많이 받은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이후 계획&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 프로젝트 올인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 나에게 주어진 미션들은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;엘라스틱 서치를 활용해 자동 완성 기능 구현&lt;/li&gt;
&lt;li&gt;AWS를 활용한 CI/CD 전반적인 구축&lt;/li&gt;
&lt;li&gt;프론트와 백엔드 간의 중재 역할&lt;/li&gt;
&lt;li&gt;팀 리딩? 안건 공유?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 미션들을 수행하면서, 많이 성장하길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;++ 부끄럽지만 어쩌다보니 영상을 하나 찍었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발표는 내가 진짜 못한다. 대학 말과 글 교양도 C+받은 사람이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 공유한다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/9TX9TS0o3KI?si=rHNdl8QRCcQckBzm&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/9TX9TS0o3KI?si=rHNdl8QRCcQckBzm&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=9TX9TS0o3KI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/LOYGs/hyVf65cIGw/xEeZnTO4aByjnThdJasocK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=926_184_1062_332&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;소승수 - 왜 System out println 대신 log를 써야할까 | 백엔드 데브코스 5기 | 20231205&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/9TX9TS0o3KI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>대외활동/프로그래머스 데브코스 백엔드 5기</category>
      <category>코딩부트캠프</category>
      <category>프로그래머스 데브코스</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/202</guid>
      <comments>https://voidmelody.tistory.com/202#entry202comment</comments>
      <pubDate>Thu, 8 Feb 2024 00:13:28 +0900</pubDate>
    </item>
    <item>
      <title>백준 2805번 - 나무 자르기 (python)</title>
      <link>https://voidmelody.tistory.com/201</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2805&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2805&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706719809592&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2805번: 나무 자르기&quot; data-og-description=&quot;첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 &amp;le; N &amp;le; 1,000,000, 1 &amp;le; M &amp;le; 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2805&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2805&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/E3npt/hyVgdhrqqn/gPjWLQJdseEtL5LCIS5OH0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2805&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2805&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/E3npt/hyVgdhrqqn/gPjWLQJdseEtL5LCIS5OH0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2805번: 나무 자르기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 &amp;le; N &amp;le; 1,000,000, 1 &amp;le; M &amp;le; 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제를 작년에 풀려고 했을 때 해당 코드를 작성했었다. (C++로 했으니 양해..)&lt;/p&gt;
&lt;pre id=&quot;code_1706719986815&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	long long n, m; // n = 나무 수, m = 목표 나무 길이
	vector&amp;lt;long long&amp;gt; v;
	long long temp;
	cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;

	for (int i = 0; i &amp;lt; n; i++)
	{
		cin &amp;gt;&amp;gt; temp;
		v.push_back(temp);
	}

	long long h = *max_element(v.begin(), v.end());
	
	while (true)
	{
		long long sum = 0;
		for (int i = 0; i &amp;lt; n; i++)
		{
			if (v[i] &amp;gt;= h)
				sum += (v[i] - h);
		}
		if (sum &amp;gt;= m)
		{
			cout &amp;lt;&amp;lt; h;
			break;
		}
		h--;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 높은 나무의 길이를 구해서 차례로 하나씩 아래로 내려가게 하는 알고리즘인데..&lt;br /&gt;이렇게 할 경우 시간 복잡도는 O(N)이 된다. 말 그대로 선형 탐색이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제에서 높이의 범위가 10억인데, 너무 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 할 경우 시간 초과가 발생했고, 그렇기에 시간 복잡도를 줄여야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해서는 이분 탐색을 활용하기로 결정했다.&lt;/p&gt;
&lt;pre id=&quot;code_1706720192381&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N, M = map(int, input().split())
trees = list(map(int, input().split()))
start = 0
end = max(trees)
h = 0
while start &amp;lt;= end:
    mid = (start + end) // 2
    result = 0
    for tree in trees:
        if tree &amp;gt; mid:
            result += (tree - mid)
    if result &amp;lt; M:
        end = mid - 1
    else:
        h = mid
        start = mid + 1
print(h)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이 문제는 전형적인 이분 탐색 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;높이를 반절씩 줄여나가며, 해당하는 조건에 만족하는지 체크한다.&lt;/p&gt;</description>
      <category>백준 문제풀이</category>
      <author>void_melody</author>
      <guid isPermaLink="true">https://voidmelody.tistory.com/201</guid>
      <comments>https://voidmelody.tistory.com/201#entry201comment</comments>
      <pubDate>Thu, 1 Feb 2024 01:58:14 +0900</pubDate>
    </item>
  </channel>
</rss>