<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SOSOHAN_CODE</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Sat, 19 Feb 2022 07:43:02 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. SOSOHAN_CODE. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/iris_lee" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[COVID-19.]]></title>
            <link>https://velog.io/@iris_lee/COVID-19</link>
            <guid>https://velog.io/@iris_lee/COVID-19</guid>
            <pubDate>Sat, 19 Feb 2022 07:43:02 GMT</pubDate>
            <description><![CDATA[<p>검은 하늘에 파도가 치듯, 
마른 바다에 구름이 끼듯
그것은 그렇게 예상치 못하게 왔다.</p>
<p>늘 마스크를 꼈지만, 방어적으로 바람을 쐬었고, 
일이나 중요한 이유없이는 나가지도 않았지만, 상해가는 손에도 꿋꿋이 알콜을 치덕였지만,
그것은 나에게 왔다.
신의 주사위는 이렇게 나에게 혼자만의 시간을 주었다.</p>
<p>나의 철골 우산이라 생각했던 KF94는 너무 짙은 항원의 폭풍 앞에서 함락됐다.
전쟁 속에서 이만큼 살아남아 왔던 것도 감사라고 여기며.
나는 나의 시간을 겪는다.</p>
<p>slux.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[글을 다시 시작한다.]]></title>
            <link>https://velog.io/@iris_lee/%EA%B8%80%EC%9D%84-%EB%8B%A4%EC%8B%9C-%EC%8B%9C%EC%9E%91%ED%95%9C%EB%8B%A4</link>
            <guid>https://velog.io/@iris_lee/%EA%B8%80%EC%9D%84-%EB%8B%A4%EC%8B%9C-%EC%8B%9C%EC%9E%91%ED%95%9C%EB%8B%A4</guid>
            <pubDate>Sat, 19 Feb 2022 07:32:43 GMT</pubDate>
            <description><![CDATA[<p>글을 쓰는 속도는 누구보다 빨라야 한다. </p>
<p>내가 글을 쓰고 싶은 이유는 짧든 길든 나를 표현할 수 있기 때문이다.
그것이 비겁하든, 못생겼든, 작든, 초라하든 
나는 나를 마주할 수 있고 그건 내일 아름다울 수 있는 기회를 준다.</p>
<p>slux.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[태그]]></title>
            <link>https://velog.io/@iris_lee/%ED%83%9C%EA%B7%B8</link>
            <guid>https://velog.io/@iris_lee/%ED%83%9C%EA%B7%B8</guid>
            <pubDate>Thu, 03 Feb 2022 05:53:44 GMT</pubDate>
            <description><![CDATA[<h4 id="1-외부-링크">1. 외부 링크</h4>
<pre><code>  &lt;a href=&quot;https://google.com&quot;&gt;구글로 가자&lt;/a&gt;</code></pre><h4 id="2-새-탭에서-외부-링크-열기">2. 새 탭에서 외부 링크 열기</h4>
<pre><code>  &lt;a href=&quot;https://google.com&quot; target=&quot;_blank&quot;&gt;새 탭에서 구글로 가자&lt;/a&gt;</code></pre><h4 id="3-페이지-최상단으로-가기">3. 페이지 최상단으로 가기</h4>
<pre><code>  &lt;a href=&quot;#&quot;&gt;위로 가자&lt;/a&gt;</code></pre><h4 id="4-로컬-링크---같은-폴더에-있는-링크">4. 로컬 링크 - 같은 폴더에 있는 링크</h4>
<p>  <img src="https://images.velog.io/images/iris_lee/post/dea3da70-006d-4afb-beee-13f1bcd6fed5/image.png" alt=""></p>
<pre><code>  &lt;a href=&quot;../../index.html&quot;&gt;Home&lt;/a&gt;
  &lt;a href=&quot;../page1.html&quot;&gt;페이지1&lt;/a&gt;
  &lt;a href=&quot;page2.html&quot;&gt;페이지2&lt;/a&gt;</code></pre><p><strong>5. 이미지</strong></p>
<ul>
<li>검색 -&gt; 우클릭 - 새 탭에서 이미지 열기</li>
<li>jpg, png 등으로 끝나는 이미지를 img src 태그에 추가<pre><code>&lt;img src=&quot;https://mblogthumb-phinf.pstatic.net/MjAxNzA4MzBfMjg0/MDAxNTA0MDc5MDM1NDMz.bdrJswqS__UqTIqgyY5BFv8Btbmt91rRZb4F2OrLPUAg.KbVJQarHRVrVXfQKFpNPmSHNEpbvzbGtC6d_kHU2vsMg.PNG.manberce-korea/20170830_163654.png?type=w2&quot;&gt;</code></pre></li>
<li>크기 조정<pre><code>&lt;img src=&quot;https://***.png?type=w2&quot; width=&quot;300&quot; height=&quot;&quot;&gt;</code></pre><pre><code>&lt;img src=&quot;https://***.jpg&quot; width=&quot;100%&quot;&gt;
&lt;img src=&quot;https://***.jpg&quot; width=&quot;50%&quot;&gt;
&lt;img src=&quot;https://***.jpg&quot; width=&quot;25%&quot;&gt;</code></pre></li>
</ul>
<ul>
<li>가운데 정렬<pre><code>&lt;style&gt;
  img {
      display: block;
      margin-left: auto;
      margin-right: auto;
  }
&lt;/style&gt;</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[boj - 10809: 알파벳 찾기 (python)]]></title>
            <link>https://velog.io/@iris_lee/boj-10809-%EC%95%8C%ED%8C%8C%EB%B2%B3-%EC%B0%BE%EA%B8%B0-python</link>
            <guid>https://velog.io/@iris_lee/boj-10809-%EC%95%8C%ED%8C%8C%EB%B2%B3-%EC%B0%BE%EA%B8%B0-python</guid>
            <pubDate>Wed, 02 Feb 2022 06:14:44 GMT</pubDate>
            <description><![CDATA[<h4 id="문제접근">문제접근</h4>
<ul>
<li>알파벳 개수 = 26개</li>
</ul>
<h4 id="풀이">풀이</h4>
<pre><code>text = input()

def find_alphabet(input):
  alphabet = &#39;abcdefghijklmnopqrstuvwxyz&#39;
  result = [-1]*len(alphabet)

  for idx, data in enumerate(text):
    if result[alphabet.index(data)] != -1:
      pass
    else:
      result[alphabet.index(data)] = idx

  result = map(str, result)
  result = &#39; &#39;.join(result)

  return result

print(find_alphabet(text))
</code></pre><p>결과</p>
<ul>
<li>time complexity : o(n). text 길이만큼 검사하게 된다. </li>
<li>space complexity : o(1). 사용하는 변수는 항상 알파벳 개수인 26 길이를 가진다.</li>
</ul>
<h4 id="시사점">시사점</h4>
<ul>
<li><p>index 찾는 방법
  data.index(&quot;value&quot;)</p>
</li>
<li><p>list를 공백으로 구분하여 출력하기
  result = map(str, result)
  result = &#39; &#39;.join(result) # join 함수는 str 형만 취급한다.</p>
</li>
<li><p>함수 작성 연습을 위해 함수 형태로 문제풀이를 해 보았다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[성장과 답변]]></title>
            <link>https://velog.io/@iris_lee/%EC%84%B1%EC%9E%A5%EA%B3%BC-%EB%8B%B5%EB%B3%80</link>
            <guid>https://velog.io/@iris_lee/%EC%84%B1%EC%9E%A5%EA%B3%BC-%EB%8B%B5%EB%B3%80</guid>
            <pubDate>Wed, 02 Feb 2022 01:26:02 GMT</pubDate>
            <description><![CDATA[<p>내가 완전히 어떤 분야에서 늙고 나이가 들었다면
어떤 질문을 들었을 때 나의 대답은 항상 똑같을 것이다.</p>
<p>하지만 내가 아직 성장하고 있는 중이라면,
나의 대답은 다를 수 있다.</p>
<p>답변의 각도가 다를 수도, 감정이 다를 수도 있고
혹은 조금 더 성장했을 수도 있다.</p>
<p>성장 과정에서의 상은 안정적이지 않기 때문에
간혹 누군가의 눈살을 찌푸리게 만들 수도 있지만
결국 큰 결과가 나오고 나면
우습게도 그 성장 과정은 누구에게도 더없이 빛나게 보일 것이다.</p>
<p>그것이 생명의 인생이다,
나의 인생의 황금기가 어느 정도 길이일지,
내가 현재 성장기인지 성숙기인지 어떤 단계에 왔는지는 오직 신만이 알고 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[boj - 11720: 숫자의 합 (python)]]></title>
            <link>https://velog.io/@iris_lee/boj-11720-%EC%88%AB%EC%9E%90%EC%9D%98-%ED%95%A9-python</link>
            <guid>https://velog.io/@iris_lee/boj-11720-%EC%88%AB%EC%9E%90%EC%9D%98-%ED%95%A9-python</guid>
            <pubDate>Tue, 01 Feb 2022 00:44:04 GMT</pubDate>
            <description><![CDATA[<h3 id="풀이1">풀이1</h3>
<pre><code>N = int(input())
number = input()
sum = 0

for i in number:
  sum += int(i)

print(sum)</code></pre><h4 id="결과">결과</h4>
<ul>
<li>time complexity : o(n) - number가 길 수록 linear search 길이가 길어진다. 모든 수를 다 더해야 하므로 n번 반복이 불가피하다.</li>
<li>space complexity : o(1) - input을 제외하고 사용한 변수가 상수 sum 뿐이다.</li>
<li>메모리/시간/코드길이 : 30864KB, 76ms, 87B</li>
</ul>
<hr>
<h4 id="접근-전환">접근 전환</h4>
<blockquote>
<p>라이브러리를 사용하여 time complexity를 o(1)으로 줄여보고자 하였다.</p>
</blockquote>
<h3 id="풀이2">풀이2</h3>
<pre><code>from functools import reduce

N = int(input())
number = list(input())

print(reduce(lambda x,y:int(x)+int(y), number))</code></pre><h4 id="결과-1">결과</h4>
<p>답은 맞지만, 결국 lambda가 input을 순회하므로 space complexity는 o(n)이다.</p>
<ul>
<li>time complexity : o(1)</li>
<li>space complexity : o(n) </li>
</ul>
<p>메모리, 시간, 가독성 관점에서 품질이 나빠졌다. 여러 메소드를 사용하기 때문인 것으로 보인다.</p>
<ul>
<li>메모리/시간/코드길이 : 32344KB, 100ms, 118B</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[boj 입력값 받기 (python)]]></title>
            <link>https://velog.io/@iris_lee/boj-%EC%9E%85%EB%A0%A5%EA%B0%92-%EB%B0%9B%EA%B8%B0-python</link>
            <guid>https://velog.io/@iris_lee/boj-%EC%9E%85%EB%A0%A5%EA%B0%92-%EB%B0%9B%EA%B8%B0-python</guid>
            <pubDate>Mon, 31 Jan 2022 10:00:21 GMT</pubDate>
            <description><![CDATA[<p>boj 문제를 풀 때, 입력데이터를 받는 여러가지 방법이다.</p>
<p>1, 2번은 한 줄에 데이터를 받을 때,
3번은 여러 줄의 데이터를 받는 경우에 사용한다.</p>
<h4 id="1-값-하나를-받을-때">1. 값 하나를 받을 때</h4>
<pre><code>N = int(input())</code></pre><h4 id="2-값-여러-개를-받을-때">2. 값 여러 개를 받을 때</h4>
<ul>
<li>map 함수를 통해 입력받는 동시에 각 원소를 int로 변환한다.<pre><code>a = list(map(int, input().split()))</code></pre></li>
</ul>
<h4 id="3-여러-줄을-받을-때">3. 여러 줄을 받을 때</h4>
<ul>
<li>몇 줄인지 정해져 있을 때<pre><code>import sys
</code></pre></li>
</ul>
<p>data = []
for i in range(10):
  line = sys.stdin.readline().rstrip()
  data.append(int(line))</p>
<pre><code>
* 정해져 있지 않을 때</code></pre><p>import sys
data = []</p>
<p>while True:
  try:
    line = sys.stdin.readline()
    if not line:
      break
    data.append(int(line.rstrip()))
  except:
    break</p>
<pre><code>
* 로컬 테스트하는 방법</code></pre><p>f = open(&#39;input.txt&#39;, &#39;r&#39;)</p>
<p>data = []
for i in range(10):
  line = f.readline().rstrip()
  data.append(int(line))
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[opencv-python 설치 (Python)]]></title>
            <link>https://velog.io/@iris_lee/opencv-%EC%84%A4%EC%B9%98-Python</link>
            <guid>https://velog.io/@iris_lee/opencv-%EC%84%A4%EC%B9%98-Python</guid>
            <pubDate>Mon, 31 Jan 2022 09:57:30 GMT</pubDate>
            <description><![CDATA[<p>Raspberry Pi4에 python opencv 패키지를 pip로 설치하면 pep등 각종 오류가 발생한다.</p>
<p>아래와 같이 설치하여 cv2가 정상적으로 import 되는 것을 확인하였다. 
단, 설치에 2시간 걸림주의.</p>
<h4 id="설치방법">설치방법</h4>
<pre><code class="language-bash">curl https://elektronicavoorjou.nl/wp-content/uploads/2020/06/install-openCV.html?_t=1591714866 | bash</code></pre>
<h4 id="정상-설치여부-확인">정상 설치여부 확인</h4>
<pre><code>import cv2
print(cv2.__version__)</code></pre><h4 id="결과">결과</h4>
<pre><code>3.4.13</code></pre><p>참고자료 : <a href="https://www.codegrepper.com/code-examples/python/install+opencv">https://www.codegrepper.com/code-examples/python/install+opencv</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[boj - 11654: 아스키 코드 (python)]]></title>
            <link>https://velog.io/@iris_lee/boj-11654-%EC%95%84%EC%8A%A4%ED%82%A4-%EC%BD%94%EB%93%9C-python</link>
            <guid>https://velog.io/@iris_lee/boj-11654-%EC%95%84%EC%8A%A4%ED%82%A4-%EC%BD%94%EB%93%9C-python</guid>
            <pubDate>Mon, 31 Jan 2022 09:36:26 GMT</pubDate>
            <description><![CDATA[<h4 id="문제접근">문제접근</h4>
<ul>
<li>라이브러리 사용</li>
</ul>
<h4 id="풀이">풀이</h4>
<pre><code>data = input()
print(ord(data))</code></pre><h4 id="시사점">시사점</h4>
<ul>
<li>코드 -&gt; 아스키문자<pre><code>chr(65)</code></pre></li>
<li>문자 -&gt; 코드<pre><code>ord(&quot;A&quot;)</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[boj - 1065: 한수 (python)]]></title>
            <link>https://velog.io/@iris_lee/boj-4673-%ED%95%9C%EC%88%98-python</link>
            <guid>https://velog.io/@iris_lee/boj-4673-%ED%95%9C%EC%88%98-python</guid>
            <pubDate>Mon, 31 Jan 2022 09:25:45 GMT</pubDate>
            <description><![CDATA[<h4 id="풀이계획">풀이계획</h4>
<ul>
<li>편법 : 2자리수까지는 모두 한수</li>
</ul>
<h4 id="코드">코드</h4>
<ul>
<li>제출<pre><code>number = int(input())
cnt = number
</code></pre></li>
</ul>
<p>def is_hansu(cnt):
  if number&lt;100:
    pass
  else:
    #한수가 아니면 cnt에서 뺸다.
    for i in range(100,number+1):
      data = [int(j) for j in str(i)]
      if data[0]-data[1] != data[1]-data[2]:
        cnt -= 1
  return cnt</p>
<p>print(is_hansu(cnt))</p>
<pre><code>
* 확장성을 고려한 개선코드, (1000 이상의 input 입력에 대한)</code></pre><p>number = int(input())
cnt = number</p>
<p>def is_hansu(cnt):
  if number&lt;100:
    # 2개 원소까지는 무조건 한수이다.
    pass
  else:
    # 이후부터는 한수가 아니면 cnt에서 뺀다.
    for i in range(100,number+1):
      data = [int(j) for j in str(i)]
      # 반복횟수가 정해져있다(for) : len(data)-1
      gap = data[0]-data[1]
      for k in range(1,len(data)-1):
        # print(1)
        if data[k]-data[k+1] != gap:
          cnt -= 1
          break
  return cnt</p>
<p>print(is_hansu(cnt))</p>
<pre><code>

#### 결과
* time complexity = o(n^2)
    - 모든 수를 원소별로 검사해야 하기 때문에 (한수정의 충족 여부) 불가피하게 n^2가 소요된다.
* space complexity = o(n)

#### 시사점
* break 사용의 중요성

#### 더 고민할 사항
* 함수를 더 효과적으로 사용할 수 있는 방법이 있는 것인지 (함수 사용 카테고리에 있는 문제이다)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[boj - 4673: 셀프 넘버 (python)]]></title>
            <link>https://velog.io/@iris_lee/Algorithmpython-boj-4673-%EC%85%80%ED%94%84-%EB%84%98%EB%B2%84</link>
            <guid>https://velog.io/@iris_lee/Algorithmpython-boj-4673-%EC%85%80%ED%94%84-%EB%84%98%EB%B2%84</guid>
            <pubDate>Wed, 19 Jan 2022 14:32:59 GMT</pubDate>
            <description><![CDATA[<h4 id="풀이계획">풀이계획</h4>
<ul>
<li>생성자에 의해 생성된 값을 리턴하는 기능을 함수로 묶는다.</li>
<li>linear search를 통해 주어진 범위까지 오름차순으로 값을 생성한다.</li>
<li>별도 주어진 범위의 데이터 리스트를 만들어 그 내에서 생성자에 의해 생성된 값을 지워나간다. [xor, 배타적, 여집합 구하는 문제]</li>
</ul>
<h4 id="코드">코드</h4>
<pre><code>def creator(number):
  # 생성자를 통해 생성된 값을 리턴한다.
  value = number
  while number != 0:
    value += number % 10
    number = number // 10
  return value

data = [i for i in range(1,10001)]
for j in range(1,10001):
  created = creator(j)
  if created in data:
    data.remove(created)

for k in data:
  print(k)</code></pre><h4 id="막히거나-고민한-점">막히거나 고민한 점</h4>
<ul>
<li>time complexity = o(n)</li>
<li>space complexity = o(n)</li>
<li>space complexity를 줄이는 방법이 있을지 조금 더 고민이 필요하다.</li>
</ul>
<h4 id="새로-알게된-것">새로 알게된 것</h4>
<ul>
<li>자릿수의 값을 더하는 방법을 하나 더 깨닫게 되었다. (원래 아래 방법을 썼다)</li>
<li>아직 공부 초반이라 더 많은 방법이 있을 것 같다.<pre><code>number = 124
data = [int(i) for i in str(number)]
sum(data)
</code></pre></li>
</ul>
<pre><code>

#### 풀이 시행착오
* 처음에 수학적으로 아래와 같이 접근했다.
* 데이터 사이즈가 커지면서 코드확장성이 확보되지 않고 11a+2b -&gt; 101a+11b+2c -&gt; 1001a+101b+11c+2d와 같이 계속 코드 수정이 필요한 문제가 있어 개선방법을 찾았다.</code></pre><p>def printer():
  data = list(range(1,10001))
  for i in range(10):
    for j in range(10):
      for k in range(10):
        for m in range(10):
          value = 1001<em>i+101</em>j+11<em>k+2</em>m
          if value in data: # 생성자로 여러번 참여할 수 있으니까.
            data.remove(value)
  for number in data:
    print(number)</p>
<p>printer()</p>
<p>```</p>
<h4 id="미스터리">미스터리</h4>
<ul>
<li>4중 for문으로 작성했을 때보다, 풀이코드로 채점했을 때 시간이 더 늘어났다. 이유를 알지 못하겠다.</li>
</ul>
<p><img src="https://images.velog.io/images/iris_lee/post/d4a5dab8-928e-43db-a2cd-ea565b166f72/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[test]]></title>
            <link>https://velog.io/@iris_lee/test-uivyy9pj</link>
            <guid>https://velog.io/@iris_lee/test-uivyy9pj</guid>
            <pubDate>Tue, 11 Jan 2022 05:12:58 GMT</pubDate>
            <description><![CDATA[<p>test</p>
]]></description>
        </item>
    </channel>
</rss>