<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>starry_ram.log</title>
        <link>https://velog.io/</link>
        <description>starry_developer</description>
        <lastBuildDate>Fri, 13 May 2022 15:31:36 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>starry_ram.log</title>
            <url>https://velog.velcdn.com/images/starry_ram/profile/0fe2ef35-d093-452d-9aa7-098eb32a6bb5/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. starry_ram.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/starry_ram" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Python_타겟 넘버]]></title>
            <link>https://velog.io/@starry_ram/Python%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84</link>
            <guid>https://velog.io/@starry_ram/Python%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84</guid>
            <pubDate>Fri, 13 May 2022 15:31:36 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.</p>
<p>-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
각 숫자는 1 이상 50 이하인 자연수입니다.
타겟 넘버는 1 이상 1000 이하인 자연수입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/8349ed45-5b78-478c-9f0c-0e6bfd87372b/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(numbers, target):
    answer = 0
    arr = [0]
    for num in numbers:
        tmp = []
        for a in arr:
            tmp.append(a + num)
            tmp.append(a - num)
        arr = tmp

    for i in arr:
        if i == target:
            answer += 1
    return answer</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(numbers, target):
    if not numbers and target == 0 :
        return 1
    elif not numbers:
        return 0
    else:
        return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">from itertools import product
def solution(numbers, target):
    l = [(x, -x) for x in numbers]
    s = list(map(sum, product(*l)))
    return s.count(target)</code></pre>
<h5 id="방법-3">방법 3.</h5>
<pre><code class="language-python">def solution(numbers, target):
    q = [0]
    for n in numbers:
        s = []
        for _ in range(len(q)):
            x = q.pop()
            s.append(x + n)
            s.append(x + n*(-1))
        q = s.copy()
    return q.count(target)</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="코드-설명-필요">코드 설명 필요</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_모의고사]]></title>
            <link>https://velog.io/@starry_ram/Python%EB%AA%A8%EC%9D%98%EA%B3%A0%EC%82%AC</link>
            <guid>https://velog.io/@starry_ram/Python%EB%AA%A8%EC%9D%98%EA%B3%A0%EC%82%AC</guid>
            <pubDate>Fri, 13 May 2022 15:20:22 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.</p>
<p>1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...</p>
<p>1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>시험은 최대 10,000 문제로 구성되어있습니다.
문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/35e8f73e-735d-48d7-92e1-934e82521926/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(answers):
    answer1 = []
    answer2 = []
    answer3 = []
    a = [1,2,3,4,5] * 2000
    b = [2,1,2,3,2,4,2,5] * 1250
    c = [3,3,1,1,2,2,4,4,5,5] * 1000
    for i in range(len(answers)):
        if a[i]/answers[i] == 1.0:
            answer1.append(a[i])
    a_len = len(answer1)

    for i in range(len(answers)):
        if b[i]/answers[i] == 1.0:
            answer2.append(b[i])
    b_len = len(answer2)

    for i in range(len(answers)):
        if c[i]/answers[i] == 1.0:
            answer3.append(c[i])
    c_len = len(answer3)

    if a_len == 0 and  b_len == 0 and c_len == 0:
        return []

    elif c_len != 0 and b_len != 0 and a_len ==0:
        if (b_len &gt; c_len):
            return [2]
        elif (c_len &gt; b_len):
            return [3]
        elif (b_len == c_len):
            return [2,3]

    elif c_len == 0 and b_len != 0 and a_len !=0:
        if (a_len &gt; b_len):
            return [1]
        elif (b_len &gt; a_len):
            return [2]
        elif (a_len == b_len):
            return [1,2]

    elif c_len != 0 and b_len == 0 and a_len !=0:
        if (a_len &gt; c_len):
            return [1]
        elif (c_len &gt; a_len):
            return [3]
        elif (a_len == c_len):
            return [1,3]

    elif a_len != 0 and b_len == 0 and c_len == 0:
        return [1]
    elif a_len == 0 and b_len != 0 and c_len == 0:
        return [2]
    elif a_len == 0 and b_len == 0 and c_len != 0:
        return [3]

    elif c_len != 0 and b_len != 0 and a_len !=0:
        if (a_len &gt; b_len &gt; c_len) or (a_len &gt; c_len &gt; b_len) or (a_len &gt; b_len == c_len):
            return [1]
        elif (b_len &gt; a_len &gt; c_len) or (b_len &gt; c_len &gt; a_len) or (b_len &gt; a_len == c_len):
            return [2]
        elif (c_len &gt; a_len &gt; b_len) or (c_len &gt; b_len &gt; a_len) or (c_len &gt; a_len == b_len):
            return [3]
        elif (a_len == b_len &gt; c_len):
            return [1,2]
        elif (a_len == c_len &gt; b_len):
             return [1,3]
        elif (b_len == c_len &gt; a_len):
             return [2,3]
        elif (a_len == b_len == c_len):
            return [1,2,3]</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">a = [1, 2, 3, 4, 5]
b = [2, 1, 2, 3, 2, 4, 2, 5]
c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

def solution(answers):
    answer = []
    aa = [1 for i, val in enumerate(answers) if a[i % 5] == val]
    bb = [1 for i, val in enumerate(answers) if b[i % 8] == val]
    cc = [1 for i, val in enumerate(answers) if c[i % 10] == val]

    x = max([len(aa),len(bb),len(cc)])

    if x == len(aa) :
        answer.append(1)
    if x == len(bb) :
        answer.append(2)
    if x == len(cc) :
        answer.append(3)

    sorted(answer)

    return answer</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="코드-설명-필요">코드 설명 필요</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_소수 만들기]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%86%8C%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EC%86%8C%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Fri, 13 May 2022 15:15:09 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="주어진-숫자-중-3개의-수를-더했을-때-소수가-되는-경우의-개수를-구하려고-합니다-숫자들이-들어있는-배열-nums가-매개변수로-주어질-때-nums에-있는-숫자들-중-서로-다른-3개를-골라-더했을-때-소수가-되는-경우의-개수를-return-하도록-solution-함수를-완성해주세요">주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.</h5>
<h4 id="제한-조건">&lt;제한 조건&gt;</h4>
<pre><code>nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/695ed032-9938-44be-8fa4-5d5cc6bb1c01/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt; 풀이 &gt;</h4>
<pre><code class="language-python">from itertools import combinations
def solution(nums):
    a = list(combinations(nums,3))
    arr = []
    for i in range(len(a)):
        arr.append(sum(a[i]))

    brr = []
    crr = []
    for j in arr:
        for k in range(1, int(j**0.5)+1):
            if j%k == 0:
                brr.append(k)
        if len(brr) == 1:
            crr.append(j)
        brr.clear()
    return len(crr)</code></pre>
<hr>
<h4 id="함수-개념">&lt;함수 개념&gt;</h4>
<ol>
<li>combinations</li>
<li>permutations</li>
</ol>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_소수 찾기]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%86%8C%EC%88%98-%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EC%86%8C%EC%88%98-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Fri, 13 May 2022 15:02:38 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="1부터-입력받은-숫자-n-사이에-있는-소수의-개수를-반환하는-함수-solution을-만들어-보세요-소수는-1과-자기-자신으로만-나누어지는-수를-의미합니다-1은-소수가-아닙니다">1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)</h5>
<h4 id="제한-조건">&lt;제한 조건&gt;</h4>
<pre><code>n은 2이상 1000000이하의 자연수입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/652f78d8-0d69-483a-aca4-fecdca3656ce/image.png" alt=""></p>
<hr>
<h4 id="풀이-1단계">&lt; 풀이 1단계&gt;</h4>
<pre><code class="language-python">def solution(n):
    answer = []
    for i in range(2,n+1):
        arr = []
        for j in range(1,i+1):
            if i%j == 0:
                arr.append(j)
        if len(arr) == 2:
            answer.append(i)
            del arr
    return len(answer)
# 테스트 케이스는 통과했으나 효율성 측면에서 실패</code></pre>
<h4 id="풀이-2단계">&lt; 풀이 2단계&gt;</h4>
<pre><code class="language-python">def solution(n):
    li = [] 
    for n in range(2,n+1): 
        check = True 
        for i in range(2, int(n**0.5)+1): 
            if n%i == 0: 
                check = False 
        if check: 
            li.append(n)

    return len(li)
# 풀이 1단계보다 효율성은 높아졌지만, 통과 못함</code></pre>
<h4 id="풀이-3단계">&lt; 풀이 3단계&gt;</h4>
<pre><code class="language-python">def solution(n):
    numbers = [True] * (n + 1)
    cnt = 0

    for i in range(2,int(n**0.5)+1):
        if numbers[i] == False:
            continue;

        for j in range(2*i,n+1,i):
            numbers[j] = False

    for j in range(2,n+1):
        if numbers[j] == True:
            cnt+=1

    return cnt
# 통과</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<pre><code class="language-python">def solution(n):
    num=set(range(2,n+1))

    for i in range(2,n+1):
        if i in num:
            num-=set(range(2*i,n+1,i))
    return len(num)</code></pre>
<hr>
<h4 id="풀이-3단계-코드-설명">&lt;풀이 3단계 코드 설명&gt;</h4>
<ol>
<li></li>
</ol>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_숫자 문자열과 영단어]]></title>
            <link>https://velog.io/@starry_ram/Python%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</link>
            <guid>https://velog.io/@starry_ram/Python%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</guid>
            <pubDate>Fri, 13 May 2022 00:39:38 GMT</pubDate>
            <description><![CDATA[<hr>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/65288dde-45ff-4c78-9648-4b639717bd8f/image.png" alt="">
<img src="https://velog.velcdn.com/images/starry_ram/post/ecfe995b-6695-4c6b-a644-4ed4fd66a094/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt; 풀이 &gt;</h4>
<pre><code class="language-python">def solution(s):
    answer = s.replace(&#39;one&#39;,&#39;1&#39;).replace(&#39;two&#39;,&#39;2&#39;).replace(&#39;three&#39;,&#39;3&#39;).replace(&#39;four&#39;,&#39;4&#39;).replace(&#39;five&#39;,&#39;5&#39;).replace(&#39;six&#39;,&#39;6&#39;).replace(&#39;seven&#39;, &#39;7&#39;).replace(&#39;eight&#39;, &#39;8&#39;).replace(&#39;nine&#39;,&#39;9&#39;).replace(&#39;zero&#39;,&#39;0&#39;)
    return int(answer)</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">num_dic = {&quot;zero&quot;:&quot;0&quot;, &quot;one&quot;:&quot;1&quot;, &quot;two&quot;:&quot;2&quot;, &quot;three&quot;:&quot;3&quot;, &quot;four&quot;:&quot;4&quot;, &quot;five&quot;:&quot;5&quot;, &quot;six&quot;:&quot;6&quot;, &quot;seven&quot;:&quot;7&quot;, &quot;eight&quot;:&quot;8&quot;, &quot;nine&quot;:&quot;9&quot;}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def solution(s):
    words = [&#39;zero&#39;, &#39;one&#39;, &#39;two&#39;, &#39;three&#39;, &#39;four&#39;, &#39;five&#39;, &#39;six&#39;, &#39;seven&#39;, &#39;eight&#39;, &#39;nine&#39;]

    for i in range(len(words)):
        s = s.replace(words[i], str(i))

    return int(s)</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<p>방법1의 경우 dict 개념을 완벽히 이해한 코드가 아닐까 싶다.</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_약수의 갯수와 덧셈]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%95%BD%EC%88%98%EC%9D%98-%EA%B0%9C%EC%88%98%EC%99%80-%EB%8D%A7%EC%85%88</link>
            <guid>https://velog.io/@starry_ram/Python%EC%95%BD%EC%88%98%EC%9D%98-%EA%B0%9C%EC%88%98%EC%99%80-%EB%8D%A7%EC%85%88</guid>
            <pubDate>Fri, 13 May 2022 00:19:55 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="두-정수-left와-right가-매개변수로-주어집니다-left부터-right까지의-모든-수들-중에서-약수의-개수가-짝수인-수는-더하고-약수의-개수가-홀수인-수는-뺀-수를-return-하도록-solution-함수를-완성해주세요">두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.</h5>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/7824b2b3-1487-4fc2-a291-b76376a03781/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/fe68d979-e8bd-4ff9-b57e-fccaefa1681b/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt; 풀이 &gt;</h4>
<pre><code class="language-python">def solution(left, right):
    arr = []
    cnt = []
    for i in range(left, right+1):
        for j in range(1,i+1):
            if i%j == 0:
                arr.append(j)
        if len(arr) %2 == 0:
            cnt.append(i)
            del arr[:]
        elif len(arr) %2 != 0:
            cnt.append(-i)
            del arr[:]
    return sum(cnt)</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5: # 개념 설명 밑에
            answer -= i
        else:
            answer += i
    return answer</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">import math
def solution(left, right):
    answer = 0
    for i in range(left, right + 1, 1):
        sqrt = math.sqrt(i)
        if int(sqrt) == sqrt:
            answer -= i
        else:
            answer += i

    return answer</code></pre>
<h5 id="방법-3">방법 3.</h5>
<pre><code class="language-python">def solution(left, right):
    def cnt_yak(number):
        cnt = 1
        for i in range(1, number//2+1):
            if number % i == 0:
                cnt += 1
        return cnt

    answer = 0
    for i in range(left, right+1):
        cnt = cnt_yak(i)
        if cnt % 2 == 0:
            answer += i
        else:
            answer -= i
    return answer</code></pre>
<hr>
<h4 id="방법-1-코드-설명">&lt;방법 1. 코드 설명&gt;</h4>
<p>int(i<strong><strong>0.5)==i</strong></strong>0.5: 부분은 약수의 갯수를 구할 때 가장 핵심적인 코드이다.</p>
<h5 id="예1-25인-경우---약수-1-5-25">예1) 25인 경우 -&gt; 약수: [1, 5, 25]</h5>
<p>25를 제곱근 씌운 경우 5 도출 -&gt; 제곱근 값이 정수형으로 나타낸 값과 같은 경우 약수의 갯수는 홀수이므로 뺀 수 도출</p>
<h5 id="예2-15인-경우---약수-1-3-5-15">예2) 15인 경우 -&gt; 약수: [1, 3, 5, 15]</h5>
<p>15를 제곱근 씌운 경우 3.XXX 도출 -&gt; 제곱근 값이 정수형으로 나타낸 값과 같지 않으므로, 약수의 갯수는 짝수이므로 더한 수 도출</p>
<h4 id="방법-2-코드-설명">&lt;방법 2. 코드 설명&gt;</h4>
<p>sqrt = math.sqrt(i) 여기서 sqrt는 제곱근을 의미하는 것으로 i****0.5와 동일한 코드이다. 제곱근 함수라고 기억하면 된다.</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_제일 작은 수 제거하기]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%A0%9C%EC%9D%BC-%EC%9E%91%EC%9D%80-%EC%88%98-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EC%A0%9C%EC%9D%BC-%EC%9E%91%EC%9D%80-%EC%88%98-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 13 May 2022 00:04:06 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/fd4f36ff-d0a4-4dcb-b168-0f540211f894/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(arr):
    if len(arr) == 1:
        return [-1]
    else:
        a = sorted(arr)
        arr.remove(a[0])
        return arr</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def rm_small(mylist):
    return [i for i in mylist if i &gt; min(mylist)]</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def rm_small(mylist):
    mylist.pop(mylist.index(min(mylist)))
    return mylist</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="방법2처럼-pop을-하는-경우-메모리-낭비의-위험이-있다">방법2처럼 pop을 하는 경우 메모리 낭비의 위험이 있다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_시저 암호]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%8B%9C%EC%A0%80-%EC%95%94%ED%98%B8</link>
            <guid>https://velog.io/@starry_ram/Python%EC%8B%9C%EC%A0%80-%EC%95%94%ED%98%B8</guid>
            <pubDate>Fri, 13 May 2022 00:01:37 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="어떤-문장의-각-알파벳을-일정한-거리만큼-밀어서-다른-알파벳으로-바꾸는-암호화-방식을-시저-암호라고-합니다-예를-들어-ab는-1만큼-밀면-bc가-되고-3만큼-밀면-de가-됩니다-z는-1만큼-밀면-a가-됩니다-문자열-s와-거리-n을-입력받아-s를-n만큼-민-암호문을-만드는-함수-solution을-완성해-보세요">어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 &quot;AB&quot;는 1만큼 밀면 &quot;BC&quot;가 되고, 3만큼 밀면 &quot;DE&quot;가 됩니다. &quot;z&quot;는 1만큼 밀면 &quot;a&quot;가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.</h5>
<h4 id="제한-조건">&lt;제한 조건&gt;</h4>
<pre><code>공백은 아무리 밀어도 공백입니다.
s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
s의 길이는 8000이하입니다.
n은 1 이상, 25이하인 자연수입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/02946efb-b228-421f-8c4a-29b753b42a76/image.png" alt=""></p>
<hr>
<h4 id="풀이-1단계">&lt; 풀이 1단계&gt;</h4>
<pre><code class="language-def">    cap_list = [&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;,&#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;]*25
    small_list = [&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;,&#39;f&#39;,&#39;g&#39;,&#39;h&#39;,&#39;i&#39;,&#39;j&#39;,&#39;k&#39;,&#39;l&#39;,&#39;m&#39;,&#39;n&#39;,&#39;o&#39;,&#39;p&#39;,&#39;q&#39;,&#39;r&#39;,&#39;s&#39;,&#39;t&#39;,&#39;u&#39;,&#39;v&#39;,&#39;w&#39;,&#39;x&#39;,&#39;y&#39;,&#39;z&#39;]*25
    a = []
    for i in range(len(s)):
        a.append(s[i])
    for j in range(len(a)):
        if a[j] in cap_list:
            b = cap_list.index(a[j])
            a[j] = cap_list[b+n]
        elif a[j] in small_list:
            c = small_list.index(a[j])
            a[j] = small_list[c+n]
    return &#39;&#39;.join(a)</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def caesar(s, n):
    s = list(s)
    for i in range(len(s)):
        if s[i].isupper():
            s[i]=chr((ord(s[i])-ord(&#39;A&#39;)+ n)%26+ord(&#39;A&#39;))
        elif s[i].islower():
            s[i]=chr((ord(s[i])-ord(&#39;a&#39;)+ n)%26+ord(&#39;a&#39;))

    return &quot;&quot;.join(s)</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def caesar(s, n):
    lower_list = &quot;abcdefghijklmnopqrstuvwxyz&quot;
    upper_list = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;

    result = []

    for i in s:
        if i is &quot; &quot;:
            result.append(&quot; &quot;)
        elif i.islower() is True:
            new_ = lower_list.find(i) + n
            result.append(lower_list[new_ % 26])
        else:
            new_ = upper_list.find(i) + n
            result.append(upper_list[new_ % 26])
    return &quot;&quot;.join(result)</code></pre>
<h5 id="방법-3">방법 3.</h5>
<pre><code class="language-python">def caesar(s, n):
    eng = &quot;abcdefghijklmnopqrstuvwxyz&quot;
    new = &quot;&quot;
    for i in s :
        if i == &quot; &quot; :
            new += &quot; &quot;
        for j in range(len(eng)) :
            if eng[j] == i.lower() :
                if i.isupper() == True :
                    new += eng[(j+n) % len(eng)].upper()
                else :
                    new += eng[(j+n) % len(eng)]
    return new</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<p>ord문자 활용하는 방법만 알아도 문제를 편리하게 풀 수 있는 것 같다. 그렇지만 나에겐 아직 정립이 안된 느낌~</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_나머지가 1이 되는 수 찾기]]></title>
            <link>https://velog.io/@starry_ram/Python%EB%82%98%EB%A8%B8%EC%A7%80%EA%B0%80-1%EC%9D%B4-%EB%90%98%EB%8A%94-%EC%88%98-%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EB%82%98%EB%A8%B8%EC%A7%80%EA%B0%80-1%EC%9D%B4-%EB%90%98%EB%8A%94-%EC%88%98-%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Wed, 11 May 2022 15:32:25 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>3 ≤ n ≤ 1,000,000</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/108925c8-c45f-48a7-bbfd-90039b3ad5c8/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(n):
    answer = []
    for x in range(2,n+1):
        if n%x == 1:
            answer.append(x)
            return answer[0]</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(n):
    answer = 0

    for divisior in range(2, (n-1//2) +1) : #2부터~반값까지 
        if (n-1) % divisior == 0: #약수가 있다면
            answer = divisior 
            break #탈출
        else: 
            answer = n-1 #약수가 없다면 본인
    return answer</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">import math
def solution(n):
    x = n - 1
    if x % 2 == 0:
        return 2
    for i in range(2, int(math.sqrt(x)) + 1):
        if x % i == 0:
            return i
    return x</code></pre>
<hr>
<h4 id="코드-리뷰">&lt;코드 리뷰&gt;</h4>
<h5 id="sqrt의-경우-제곱근을-의미하는-것으로-math-함수를-import-하지-않고-대신-x05로-써도-된다">sqrt의 경우 제곱근을 의미하는 것으로, math 함수를 import 하지 않고 대신, (x**0.5)로 써도 된다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_ 두 개 뽑아서 더하기]]></title>
            <link>https://velog.io/@starry_ram/Python-%EB%91%90-%EA%B0%9C-%EB%BD%91%EC%95%84%EC%84%9C-%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python-%EB%91%90-%EA%B0%9C-%EB%BD%91%EC%95%84%EC%84%9C-%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 11 May 2022 15:26:43 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/0d48e01a-e3b3-4ae0-b19e-934869a939a8/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(numbers):
    answer = []
    numbers.sort()
    for i in range(len(numbers)):
        for j in range(len(numbers)):
            if i &lt; j:
                answer.append(numbers[i]+numbers[j])
    return sorted(list(set(answer)))</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이 &gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            answer.append(numbers[i] + numbers[j])
    return sorted(list(set(answer)))</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">from itertools import combinations
def solution(numbers):
    return sorted(set(sum(i) for i in list(combinations(numbers, 2))))</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="방법2의-경우에는-수열조합을-통해-구현하였다-굉장히-간편한-방법으로-다양한-함수를-익혀두는-것이-좋을-듯-싶다">방법2의 경우에는 수열조합을 통해 구현하였다. 굉장히 간편한 방법으로 다양한 함수를 익혀두는 것이 좋을 듯 싶다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_문자열 내림차순으로 배치하기]]></title>
            <link>https://velog.io/@starry_ram/Python%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 11 May 2022 15:17:36 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>str은 길이 1 이상인 문자열입니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/3c1b272b-6295-4841-a6ff-fcedfd48f6f8/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(s):
    return &quot;&quot;.join(list(reversed(sorted(s))))</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<pre><code class="language-python">def solution(s):
    return &#39;&#39;.join(sorted(s, reverse=True))
    # reverse의 다른 표현방식</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="reverse-vs-reversed-개념-확실히-정리하기">reverse vs reversed 개념 확실히 정리하기!</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_부족한 금액 계산하기]]></title>
            <link>https://velog.io/@starry_ram/Python%EB%B6%80%EC%A1%B1%ED%95%9C-%EA%B8%88%EC%95%A1-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EB%B6%80%EC%A1%B1%ED%95%9C-%EA%B8%88%EC%95%A1-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 11 May 2022 03:43:56 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.</p>
<h5 id="제한-사항">제한 사항</h5>
<pre><code>놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/7a5b4a93-11cc-44c6-8403-5de86c0f9c5e/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(price, money, count):
    sum = 0
    for i in range(1, count+1):
        a = price * i
        sum += a
    if sum &gt; money:
        return sum - money
    else:
        return 0</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(price, money, count):
    return max(0,price*(count+1)*count//2-money)</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def solution(price, money, count):
    return abs(min(money - sum([price*i for i in range(1,count+1)]),0))</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="개발자가-수학자가-되어가는-기분이-솔솔">개발자가 수학자가 되어가는 기분이 솔솔......</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_음양 더하기]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%9D%8C%EC%96%91-%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EC%9D%8C%EC%96%91-%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 11 May 2022 03:18:13 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="어떤-정수들이-있습니다-이-정수들의-절댓값을-차례대로-담은-정수-배열-absolutes와-이-정수들의-부호를-차례대로-담은-불리언-배열-signs가-매개변수로-주어집니다-실제-정수들의-합을-구하여-return-하도록-solution-함수를-완성해주세요">어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.</h5>
<h5 id="제한사항">[제한사항]</h5>
<pre><code>absolutes의 길이는 1 이상 1,000 이하입니다.
absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/15b342f0-c2ef-41e9-86ba-716c1b1c883f/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(absolutes, signs):
    arr = []
    for i in range(len(absolutes)):
        if signs[i] == True:
            arr.append(absolutes[i])
        elif signs[i] == False:
            arr.append(-absolutes[i])
    return sum(arr)</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<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>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="zip-함수를-통해-absolutes와-signs를-묶고-list-comprehension을-이용하여-한줄로-표현한-것이-너무-인상깊었다-아직까지는-zip함수가-익숙하지가-않아서-표현에-어려움이-있지만-편리한-함수인만큼-다양하게-사용하는-것이-좋을-듯-하다">zip 함수를 통해 absolutes와 signs를 묶고, list comprehension을 이용하여 한줄로 표현한 것이 너무 인상깊었다. 아직까지는 zip함수가 익숙하지가 않아서 표현에 어려움이 있지만 편리한 함수인만큼 다양하게 사용하는 것이 좋을 듯 하다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_k번째 수]]></title>
            <link>https://velog.io/@starry_ram/Pythonk%EB%B2%88%EC%A7%B8-%EC%88%98</link>
            <guid>https://velog.io/@starry_ram/Pythonk%EB%B2%88%EC%A7%B8-%EC%88%98</guid>
            <pubDate>Wed, 27 Apr 2022 13:17:04 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문제-설명">문제 설명</h5>
<p>배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.</p>
<p>예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면</p>
<p>array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.</p>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/10f654be-4234-4923-9823-14be62c4f436/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python"># 처음 생각(예로 만들어보기)
array = [1, 5, 2, 6, 3, 7, 4]
i = 2
j = 5
k = 3

array2 = array[i-1:j]
array2.sort()
array2[k-1]

----------------------------------------------
#생각 확장 및 답
def solution(array, commands):
    answer = []
    for i in range(len(commands)):
        arr = array[commands[i][0]-1 : commands[i][1]]
        arr.sort()
        answer.append(arr[commands[i][2]-1])
    return answer</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def solution(array, commands):
    answer = []
    for command in commands:
        i,j,k = command
        answer.append(list(sorted(array[i-1:j]))[k-1])
    return answer</code></pre>
<h5 id="방법-3">방법 3.</h5>
<pre><code class="language-python">
def solution(array, commands):
    return [sorted(array[a[0]-1:a[1]])[a[2]-1] for a in commands]</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="파이썬은-공부할-수록-내가-멍청해지는-기분이다-다른-사람-코드-볼-때마다-감탄과-현타를-느끼게-되는-">파이썬은 공부할 수록 내가 멍청해지는 기분이다. 다른 사람 코드 볼 때마다 감탄과 현타를 느끼게 되는................ =^=</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[알고리즘_스택(Stack)]]></title>
            <link>https://velog.io/@starry_ram/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%8A%A4%ED%83%9D</link>
            <guid>https://velog.io/@starry_ram/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%8A%A4%ED%83%9D</guid>
            <pubDate>Wed, 20 Apr 2022 12:06:07 GMT</pubDate>
            <description><![CDATA[<h4 id="들어가기에-앞서">들어가기에 앞서</h4>
<h5 id="자료구조-분류">자료구조 분류</h5>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/8b597f25-1723-450d-9d33-07f81da87a0f/image.png" alt=""></p>
<h6 id="출처-httpsblognavercomsun_zero2221747373979">출처) <a href="https://blog.naver.com/sun_zero2/221747373979">https://blog.naver.com/sun_zero2/221747373979</a></h6>
<hr>
<h2 id="스택stack">스택(Stack)</h2>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/1b572f92-0838-4d57-ace3-1748c8bcc59a/image.png" alt=""></p>
<p>stack의 구조를 가장 잘 표현해주는 이미지이다.
사실 stack을 설명할때 쌓여있는 책으로 표현을 많이 하는데, 난 편의상 쌓여있는 마카롱으로 이해했다.(가장 접근하기 쉬운 방법으로 이해하는 것이 좋다 ㅎㅎㅎㅎㅎ)</p>
<p>새로운 마카롱을 만들었다고 가정하자.
새로운 마카롱을 어디다 위치하는 것이 좋을까?
당연히, 노란색 마카롱 위에 위치하는 것이 좋다.
<strong>즉, 차례대로 밑에서부터 쌓아가는 과정이자 가장 최신에 만든 자료가 맨 위에 위치하는 방법이 stack이다.</strong></p>
<h3 id="스택-구조에서-사용할-수-있는-명령어">스택 구조에서 사용할 수 있는 명령어</h3>
<blockquote>
<ol>
<li><strong>push</strong> : stack 맨 위(맨 끝)에 항목을 삽입하기 </li>
</ol>
</blockquote>
<pre><code>&lt;사용법&gt;
s = [1,2,3,4,5]
s.push(6)
print(s) -&gt; [1,2,3,4,5,6]</code></pre><p> 2.** pop** : stack 맨 끝의 항목을 빼내기</p>
<pre><code>&lt;사용법&gt;
s = [1,2,3,4,5,6]
s.pop() # 6제거됨
print(s) -&gt; [1,2,3,4,5]</code></pre><p> 3.** top/peek** : stack 맨 끝의 항목을 조회하기</p>
<pre><code>&lt;사용법&gt;
s = [1,2,3,4,5]
print(s.peek()) -&gt; 5
print(s) -&gt; [1,2,3,4,5]</code></pre><p> 4.** empty** : 빈 stack인지 확인하기</p>
<pre><code>&lt;사용법&gt;
s = [1,2,3,4,5]
print(s.isempty()) -&gt; False</code></pre><ol start="5">
<li>** size** : stack 크기 확인<pre><code>&lt;사용법&gt;
s = [1,2,3,4,5]
print(s.size()) -&gt; 5
</code></pre></li>
</ol>
<hr>
<h2 id="스택-구현방법">스택 구현방법</h2>
<ol>
<li><p>함수 설정
<img src="https://velog.velcdn.com/images/starry_ram/post/9f35885d-94ec-492b-a0cd-5bfdf35a6f63/image.png" alt=""></p>
</li>
<li><p>확인
<img src="https://velog.velcdn.com/images/starry_ram/post/34996315-f607-41eb-b892-0822ce93c63e/image.png" alt=""></p>
</li>
<li><p>출력
<img src="https://velog.velcdn.com/images/starry_ram/post/7e82e53f-4d15-41bb-9550-7443da38de54/image.png" alt=""></p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Study_Plan]]></title>
            <link>https://velog.io/@starry_ram/StudyPlan</link>
            <guid>https://velog.io/@starry_ram/StudyPlan</guid>
            <pubDate>Tue, 19 Apr 2022 03:01:45 GMT</pubDate>
            <description><![CDATA[<h2 id="계획1">계획1</h2>
<pre><code>머신러닝 강의 수강 및 수료증 발급받기
(과제 제출 및 퀴즈 포함)</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/e22741d6-1fc9-444e-b767-0867cee23a3a/image.png" alt="">
<img src="https://velog.velcdn.com/images/starry_ram/post/e7fb6f7e-90a8-4fa7-b365-fb90cde9309f/image.png" alt=""></p>
<h2 id="계획2">계획2</h2>
<pre><code>혼자 공부하는 머신러닝+딥러닝 책 **완독** 하기
2022.04.18.(월) 책 주문 완료
2022.04.19.(화) 책 수령 예정</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/f305852e-480b-4c73-a687-e36f45c8253e/image.png" alt=""></p>
<h2 id="계획3">계획3</h2>
<pre><code>알고리즘 강의 듣고 문제 풀이
문제 풀이 방법 블로그 업로드 및 개념 정리
1) 스택/큐
    문제1. 주택가격
    문제2. 기능개발
    문제3. 다리를 지나는 트럭

2) 완전탐색/이분탐색
    문제1. 모의고사
    문제2. 소수 찾기
    문제3. 숫자카드2</code></pre><h2 id="계획4">계획4</h2>
<pre><code>공모전 본격적으로 준비
2020년도 출품작 분석하기</code></pre><p><img src="https://velog.velcdn.com/images/starry_ram/post/9caec773-fbca-4278-a6d9-8747d6ffcdb3/image.jpg" alt=""></p>
<h4 id="2022-04-30토까지-완료하기">2022. 04. 30.(토)까지 완료하기</h4>
<h4 id="머신러닝에-무너질-수-없다">머신러닝에 무너질 수 없다</h4>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/b1331a6b-0b50-4121-85b0-a78b9fe7b82a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_문자열을 정수로 바꾸기]]></title>
            <link>https://velog.io/@starry_ram/Python%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%A0%95%EC%88%98%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
            <guid>https://velog.io/@starry_ram/Python%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%A0%95%EC%88%98%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Sun, 17 Apr 2022 06:01:40 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="문자열-s를-숫자로-변환한-결과를-반환하는-함수-solution을-완성하세요">문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.</h5>
<h5 id="예를들어-str이-1234이면-1234를-반환하고--1234이면--1234를-반환하면-됩니다-str은-부호-와-숫자로만-구성되어-있고-잘못된-값이-입력되는-경우는-없습니다">예를들어 str이 &quot;1234&quot;이면 1234를 반환하고, &quot;-1234&quot;이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.</h5>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(s):
    s = int(s)
    return s</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<pre><code class="language-python">def solution(str):
    result = 0

    for idx, number in enumerate(str[::-1]):
        if number == &#39;-&#39;:
            result *= -1
        else:
            result += int(number) * (10 ** idx)

    return result</code></pre>
<hr>
<h4 id="코드-해설">&lt;코드 해설&gt;</h4>
<h5 id="다른-풀이법에서-enumerate를-쓴-것이-인상깊는다-enumerate는-반복문을-사용-할-때-몇-번째-반복문인지-인덱스-번호를-매겨주는-요소라고-생각하면-된다-코드-설명은-다음과-같다">다른 풀이법에서, enumerate를 쓴 것이 인상깊는다. enumerate는 반복문을 사용 할 때 몇 번째 반복문인지 인덱스 번호를 매겨주는 요소라고 생각하면 된다. 코드 설명은 다음과 같다.</h5>
<h5 id="예-1234입력">예) &#39;1234&#39;입력</h5>
<pre><code> str[::-1]에 의해 4321로 바뀜.
 이때, enumerate에 의해 idx = 0, number = 4
 else구문에서 reseult값은 int(4)*(10**0) = 4
 for문에 의해 다시 돌아가면 idx = 1, number = 3
 else구문에서 reseult값은 int(3)*(10**1) = 30
 result += 에 의해 4 + 30 = 34 도출
 이러한 형태로 1까지 가게 되면 1234 정수 값이 도출된다.</code></pre><h5 id="예--1234입력">예) &#39;-1234&#39;입력</h5>
<pre><code> str[::-1]에 의해 4321-로 바뀜.
 위에 설명한대로 idx = 3, number 1까지 했을 경우 1234가 도출된다.
 그 후, - 가 있으니 1234 * &#39;-&#39; 값인 -1234 도출</code></pre><hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="알고리즘을-알고리즘처럼-푸는-것이-쉽지-않다">알고리즘을 알고리즘처럼 푸는 것이 쉽지 않다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_2016년]]></title>
            <link>https://velog.io/@starry_ram/Python2016%EB%85%84</link>
            <guid>https://velog.io/@starry_ram/Python2016%EB%85%84</guid>
            <pubDate>Sun, 17 Apr 2022 04:07:55 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="2016년-1월-1일은-금요일입니다-2016년-a월-b일은-무슨-요일일까요-두-수-a-b를-입력받아-2016년-a월-b일이-무슨-요일인지-리턴하는-함수-solution을-완성하세요-요일의-이름은-일요일부터-토요일까지-각각-sunmontuewedthufrisat-입니다-예를-들어-a5-b24라면-5월-24일은-화요일이므로-문자열-tue를-반환하세요">2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 &quot;TUE&quot;를 반환하세요.</h5>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/47c6c0df-402c-475a-b014-f9a1b5269557/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt;풀이&gt;</h4>
<pre><code class="language-python">def solution(a, b):
    m = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    d = [&#39;THU&#39;,&#39;FRI&#39;,&#39;SAT&#39;,&#39;SUN&#39;,&#39;MON&#39;,&#39;TUE&#39;,&#39;WED&#39;]
    dday = sum(m[:a-1]) + b
    return d[dday%7]</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def getDayName(a,b):
    answer = &quot;&quot;
    if a&gt;=2:
        b+=31
        if a&gt;=3:
            b+=29#2월
            if a&gt;=4:
                b+=31#3월
                if a&gt;=5:
                    b+=30#4월
                    if a&gt;=6:
                        b+=31#5월
                        if a&gt;=7:
                            b+=30#6월
                            if a&gt;=8:
                                b+=31#7월
                                if a&gt;=9:
                                    b+=31#8월
                                    if a&gt;=10:
                                        b+=30#9월
                                        if a&gt;=11:
                                            b+=31#10월
                                            if a==12:
                                                b+=30#11월
    b=b%7

    if b==1:answer=&quot;FRI&quot;
    elif b==2:answer=&quot;SAT&quot; 
    elif b==3:answer=&quot;SUN&quot;
    elif b==4:answer=&quot;MON&quot;
    elif b==5:answer=&quot;TUE&quot;
    elif b==6:answer=&quot;WED&quot;
    else:answer=&quot;THU&quot;
    return answer</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">import datetime

def getDayName(a,b):
    t = &#39;MON TUE WED THU FRI SAT SUN&#39;.split()
    return t[datetime.datetime(2016, a, b).weekday()]</code></pre>
<h5 id="방법-3">방법 3.</h5>
<pre><code class="language-python">def getDayName(a,b):
    day_name = [&#39;THU&#39;, &#39;FRI&#39;, &#39;SAT&#39;, &#39;SUN&#39;, &#39;MON&#39;, &#39;TUE&#39;, &#39;WED&#39;]
    month_dict = {
        &quot;1&quot;:31, 
        &quot;2&quot;:29, 
        &quot;3&quot;:31, 
        &quot;4&quot;:30, 
        &quot;5&quot;:31, 
        &quot;6&quot;:30, 
        &quot;7&quot;:31, 
        &quot;8&quot;:31, 
        &quot;9&quot;:30, 
        &quot;10&quot;:31, 
        &quot;11&quot;:30, 
        &quot;12&quot;:31
    }
    days = 0
    for i in range(1, a):
        days += month_dict[str(i)]
    days += b
    index = days % 7

    return day_name[index]</code></pre>
<h5 id="방법-4">방법 4.</h5>
<pre><code class="language-python">def solution(a, b):
    days = [&quot;SUN&quot;, &quot;MON&quot;, &quot;TUE&quot;, &quot;WED&quot;, &quot;THU&quot;, &quot;FRI&quot;, &quot;SAT&quot;]
    dayLen = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    now = 5
    for i in range(0, a - 1) :
        now += dayLen[i]

    answer = (now + b - 1) % 7

    return days[answer]</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="사실-방법1-경우를-가장-먼저-생각했다-도저히-어떻게-코드를-구현해야할-지-감이-안와서-노가다로-하다가-결국-list형식으로-구현했다-끝까지-코드를-완성시키는-것-또한-너무나-본받을-점이다">사실 방법1 경우를 가장 먼저 생각했다. 도저히 어떻게 코드를 구현해야할 지 감이 안와서 노가다로 하다가 결국 list형식으로 구현했다. 끝까지 코드를 완성시키는 것 또한 너무나 본받을 점이다.</h5>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_최대공약수와 최소공배수]]></title>
            <link>https://velog.io/@starry_ram/Python%EC%B5%9C%EB%8C%80%EA%B3%B5%EC%95%BD%EC%88%98%EC%99%80-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98</link>
            <guid>https://velog.io/@starry_ram/Python%EC%B5%9C%EB%8C%80%EA%B3%B5%EC%95%BD%EC%88%98%EC%99%80-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98</guid>
            <pubDate>Sat, 16 Apr 2022 15:34:30 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="두-수를-입력받아-두-수의-최대공약수와-최소공배수를-반환하는-함수-solution을-완성해-보세요-배열의-맨-앞에-최대공약수-그다음-최소공배수를-넣어-반환하면-됩니다-예를-들어-두-수-3-12의-최대공약수는-3-최소공배수는-12이므로-solution3-12는-3-12를-반환해야-합니다">두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.</h5>
<hr>
<h4 id="생각-흐름-상-풀이">&lt;생각 흐름 상 풀이&gt;</h4>
<pre><code class="language-python">def solution(n, m):
    for i in range(2, 1000000):
        for j in range(2, 1000000):
            if m%j == 0 and n%i == 0:
                if i == j:
                    if i == n or j == m:
                        return [i, int(i*(m/i)*(n/i))]
                    else:
                        return [i,int((m/i)*(n/i))]
                    break  
            if n%m == 0:
                return [m, n]
            break
        if m%n == 0:
            return [n, m]
        break
    if (m%j != 0 and n%i !=0) and (n%m != 0) and (m%n != 0):
        return [1, n*m]
    elif (m%j == 0 and n%i !=0) and (n%m != 0) and (m%n != 0):
        return [1, n*m]
    elif (m%j!= 0 and n%i ==0) and (n%m != 0) and (m%n != 0):
        return [1, n*m]
        # 안풀림. 때에 따라 다르게 결과 도출</code></pre>
<h4 id="최종-풀이">&lt;최종 풀이&gt;</h4>
<pre><code class="language-python">def solution(n, m): 
    min_i = 0
    max_i = 0
    for i in range(min(n,m),0,-1): # 최대공약수 구하기
        if n%i == 0 and m%i == 0:
            min_i = i
            break

    for i in range(max(n,m), (n*m)+1): # 최소공배수 구하기
        if i%n == 0 and i%m == 0:
            max_i = i
            break

    return [min_i, max_i]</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def gcdlcm(a, b):
    c, d = max(a, b), min(a, b)
    t = 1
    while t &gt; 0:
        t = c % d
        c, d = d, t
    answer = [c, int(a*b/c)]

    return answer</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def solution(n, m):
    nlist = []
    mlist = []
    for i in range(1, n+1):
        if n%i == 0:
            nlist.append(i)
    for i in range(1, m+1):
        if m%i == 0:
            mlist.append(i)
    maxi=[]
    for i in nlist:
        if i in mlist:
            maxi.append(i)
    maximum = max(maxi)

    minimum = int(maximum * (n/maximum) * (m/maximum))

    answer = [maximum, minimum]
    return answer</code></pre>
<hr>
<h4 id="개념">&lt;개념&gt;</h4>
<h5 id="방법-1--euclidean-algorithm-도입">방법 1:  Euclidean algorithm 도입</h5>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/901961ea-4419-4626-9c26-a6282939b9bb/image.png" alt=""></p>
<h6 id="출처--httpsj1w2k3tistorycom1173">출처 : <a href="https://j1w2k3.tistory.com/1173">https://j1w2k3.tistory.com/1173</a></h6>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python_행렬의 덧셈]]></title>
            <link>https://velog.io/@starry_ram/Python%ED%96%89%EB%A0%AC%EC%9D%98-%EB%8D%A7%EC%85%88</link>
            <guid>https://velog.io/@starry_ram/Python%ED%96%89%EB%A0%AC%EC%9D%98-%EB%8D%A7%EC%85%88</guid>
            <pubDate>Sat, 16 Apr 2022 14:14:01 GMT</pubDate>
            <description><![CDATA[<hr>
<h4 id="문제">&lt;문제&gt;</h4>
<h5 id="행렬의-덧셈은-행과-열의-크기가-같은-두-행렬의-같은-행-같은-열의-값을-서로-더한-결과가-됩니다-2개의-행렬-arr1과-arr2를-입력받아-행렬-덧셈의-결과를-반환하는-함수-solution을-완성해주세요">행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.</h5>
<p><img src="https://velog.velcdn.com/images/starry_ram/post/290c4849-0ec6-41eb-bda6-aff9977294b2/image.png" alt=""></p>
<hr>
<h4 id="풀이">&lt; 풀이 &gt;</h4>
<pre><code class="language-python">import numpy as np # 넘파이 활용 간단 
def solution(A,B):
    A=np.array(A)
    B=np.array(B) 
    answer=A+B 
    return answer.tolist()</code></pre>
<hr>
<h4 id="다른-풀이">&lt;다른 풀이&gt;</h4>
<h5 id="방법-1">방법 1.</h5>
<pre><code class="language-python">def sumMatrix(A,B):
    answer = []

    for a, b in zip(A, B):
        l = []
        for x, y in zip(a, b):
            l.append(x + y)
        answer.append(l)

    return answer</code></pre>
<h5 id="방법-2">방법 2.</h5>
<pre><code class="language-python">def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]
    return answer</code></pre>
<hr>
<h4 id="느낀점">&lt;느낀점&gt;</h4>
<h5 id="행렬-연산은-넘파이가-가장-간편하다">행렬 연산은 넘파이가 가장 간편하다.</h5>
<hr>
]]></description>
        </item>
    </channel>
</rss>