<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>감자블로그</title>
    <link>https://cccaaa.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 29 Jun 2026 22:17:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>감자156</managingEditor>
    <image>
      <title>감자블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/6259868/attach/c5f31173b0dc41609052ea98b404bfed</url>
      <link>https://cccaaa.tistory.com</link>
    </image>
    <item>
      <title>[error] TypeError: _WandbInit._pause_backend() takes 1 positional argument but 2 were given 오류 해결</title>
      <link>https://cccaaa.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;jupyter notebook에서 wandb 사용해서 훈련시 에러 발생&lt;/p&gt;
&lt;pre id=&quot;code_1714099723157&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!pip install ipython==8.16.1&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;&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;a href=&quot;https://github.com/wandb/wandb/issues/6546&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/wandb/wandb/issues/6546&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1714099677386&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;[CLI]: TypeError: _WandbInit._pause_backend() takes 1 positional argument but 2 were given &amp;middot; Issue #6546 &amp;middot; wandb/wandb&quot; data-og-description=&quot;Describe the bug if i used run = wandb.init(entity=&amp;quot;bart_tadev&amp;quot;, project='GPT-4 in Python', name=&amp;quot;test&amp;quot;) in jupyter notebook error raised TypeError: _WandbInit._pause_backend() takes 1 positional a...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/wandb/wandb/issues/6546&quot; data-og-url=&quot;https://github.com/wandb/wandb/issues/6546&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lCX5c/hyVS2oa2J8/ufC7QVlm4uKKVMLYkc4xs0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/wandb/wandb/issues/6546&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/wandb/wandb/issues/6546&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lCX5c/hyVS2oa2J8/ufC7QVlm4uKKVMLYkc4xs0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;[CLI]: TypeError: _WandbInit._pause_backend() takes 1 positional argument but 2 were given &amp;middot; Issue #6546 &amp;middot; wandb/wandb&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Describe the bug if i used run = wandb.init(entity=&quot;bart_tadev&quot;, project='GPT-4 in Python', name=&quot;test&quot;) in jupyter notebook error raised TypeError: _WandbInit._pause_backend() takes 1 positional a...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&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;</description>
      <category>오류 핸들링</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/228</guid>
      <comments>https://cccaaa.tistory.com/228#entry228comment</comments>
      <pubDate>Fri, 26 Apr 2024 11:49:14 +0900</pubDate>
    </item>
    <item>
      <title>[error] vscode 파일 실행 안될 때</title>
      <link>https://cccaaa.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;vscode에서 파일 실행해봐도 동작을 안할 때 해결방법&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;1. restricted mode인지 확인하고 trust 모드로 바꿔주기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWfjZK/btsGqwqj4hU/7KWxelx8brIcXygpOdDBk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWfjZK/btsGqwqj4hU/7KWxelx8brIcXygpOdDBk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWfjZK/btsGqwqj4hU/7KWxelx8brIcXygpOdDBk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWfjZK%2FbtsGqwqj4hU%2F7KWxelx8brIcXygpOdDBk1%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;546&quot; height=&quot;230&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;230&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;왼쪽 하단 restircted mode 눌러서 trustmode로 바꾸기&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;2. vscode 재설치&lt;/p&gt;</description>
      <category>개발환경</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/226</guid>
      <comments>https://cccaaa.tistory.com/226#entry226comment</comments>
      <pubDate>Fri, 5 Apr 2024 22:21:15 +0900</pubDate>
    </item>
    <item>
      <title>[mySQL] 내가 보려고 만든 SQL 문법 기초 정리</title>
      <link>https://cccaaa.tistory.com/225</link>
      <description>&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;b&gt;기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1711721889597&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM TABLE;&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;b&gt;JOIN 하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1711721934303&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM TABLE1 JOIN TABLE2
ON TABLE1.COL1 = TABLE2.COL1;&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;b&gt;GROUP으로 묶기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1711721961686&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM TABLE
GROUP BY COL1
HAVING COL1 &amp;lt; 10;&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;b&gt;CASE WHEN 조건문&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1711722054262&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT COL1, (
	CASE WHEN COL2 &amp;lt; 10 THEN 'A'
    	 WHEN COL2 &amp;lt; 20 THEN 'B'
    	 ELSE 'C'
    END
) AS CUSTOM_COL2 FROM TABLE;&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;b&gt;문자열 처리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;concat( str1, str2 )&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;b&gt;통계&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;count( col이름 ),&amp;nbsp; sum( col이름 ),&amp;nbsp; avg( col이름 ),&amp;nbsp; std( col이름 ),&amp;nbsp; ceil( col이름 ), floor( col이름 ),&amp;nbsp; round( col이름 ),&amp;nbsp; abs( col이름 ),&amp;nbsp; sqrt( col이름 )&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;b&gt;날짜 관련 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;quarter( datecol )&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;b&gt;정렬&lt;/b&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;&lt;b&gt;WITH&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;with로 쿼리 안에서 재사용 가능한 테이블 표현식 ( &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;Common Table Expression, CTE ) &lt;/span&gt;을 만들어 사용&lt;/p&gt;
&lt;pre id=&quot;code_1711729909173&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH TMP AS (SELECT SUM(SCORE) AS S, EMP_NO FROM HR_GRADE GROUP BY EMP_NO)
SELECT TMP.S AS SCORE, E.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAIL
FROM HR_EMPLOYEES AS E JOIN TMP ON TMP.EMP_NO = E.EMP_NO
WHERE TMP.S = (SELECT MAX(S) FROM TMP);&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;b&gt;기타&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;distinct( col이름 ), exists( 서브쿼리 )&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;b&gt;서브쿼리1 : SELECT 에서&lt;/b&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;&lt;b&gt;서브쿼리1 : FROM 에서&lt;/b&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;b&gt;cf) &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wildeveloperetrain.tistory.com/223&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wildeveloperetrain.tistory.com/223&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1711726961193&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;(MySQL) IN, NOT IN, EXISTS, NOT EXISTS 동작 방식 정리&quot; data-og-description=&quot;해당 내용은 IN / NOT IN / EXISTS / NOT EXISTS 동작 방식을 정리한 내용으로 MySQL을 기준으로 실행하고 작성된 내용이지만 MSSQL, Oracle 등에서도 적용되는 내용입니다. (예시에 사용될 orders table, customers ta&quot; data-og-host=&quot;wildeveloperetrain.tistory.com&quot; data-og-source-url=&quot;https://wildeveloperetrain.tistory.com/223&quot; data-og-url=&quot;https://wildeveloperetrain.tistory.com/223&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/99Eo7/hyVGLFLkAB/WDRNKKdom9mPctRlKgwiIk/img.jpg?width=638&amp;amp;height=465&amp;amp;face=0_0_638_465,https://scrap.kakaocdn.net/dn/O1RoZ/hyVGMkmHHZ/PTjn93MM3rNB5oZXwkZKYK/img.jpg?width=638&amp;amp;height=465&amp;amp;face=0_0_638_465,https://scrap.kakaocdn.net/dn/raiQL/hyVGJ80Lwm/Xl879NFkmXKLDbcsitlkM1/img.jpg?width=628&amp;amp;height=341&amp;amp;face=0_0_628_341&quot;&gt;&lt;a href=&quot;https://wildeveloperetrain.tistory.com/223&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wildeveloperetrain.tistory.com/223&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/99Eo7/hyVGLFLkAB/WDRNKKdom9mPctRlKgwiIk/img.jpg?width=638&amp;amp;height=465&amp;amp;face=0_0_638_465,https://scrap.kakaocdn.net/dn/O1RoZ/hyVGMkmHHZ/PTjn93MM3rNB5oZXwkZKYK/img.jpg?width=638&amp;amp;height=465&amp;amp;face=0_0_638_465,https://scrap.kakaocdn.net/dn/raiQL/hyVGJ80Lwm/Xl879NFkmXKLDbcsitlkM1/img.jpg?width=628&amp;amp;height=341&amp;amp;face=0_0_628_341');&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;(MySQL) IN, NOT IN, EXISTS, NOT EXISTS 동작 방식 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;해당 내용은 IN / NOT IN / EXISTS / NOT EXISTS 동작 방식을 정리한 내용으로 MySQL을 기준으로 실행하고 작성된 내용이지만 MSSQL, Oracle 등에서도 적용되는 내용입니다. (예시에 사용될 orders table, customers ta&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wildeveloperetrain.tistory.com&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;</description>
      <category>알고리즘</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/225</guid>
      <comments>https://cccaaa.tistory.com/225#entry225comment</comments>
      <pubDate>Sat, 30 Mar 2024 02:22:18 +0900</pubDate>
    </item>
    <item>
      <title>[error] RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [8192, 180]], which is output 0 of ViewBackward, is at version 1; expected version 0 instead. Hint: enable anom..</title>
      <link>https://cccaaa.tistory.com/224</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;forward 중에 inplace operaion 이 있어서 역전파 autograd시 무슨 문제가 있다는 말&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;x += model(x) 이런 꼴이 있는지 확인해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;t = model(x)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x = x+t&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708688630806&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;RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatT&quot; data-og-description=&quot;Thanks a lot. it worked for me.&quot; data-og-host=&quot;discuss.pytorch.org&quot; data-og-source-url=&quot;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&quot; data-og-url=&quot;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRxQ2k/hyVmYGfqMq/EPNJMeEBOsgrPCKnuxMil1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bqEu0X/hyVmTrrRP5/TgKv6TX8KvGd6LkkwJK4jk/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://discuss.pytorch.org/t/runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation-torch-cuda-floattensor-1-1-256-256-which-is-output-0-of-relubackward0-is-at-version-1-expected-version-0-instead/143490/9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRxQ2k/hyVmYGfqMq/EPNJMeEBOsgrPCKnuxMil1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bqEu0X/hyVmTrrRP5/TgKv6TX8KvGd6LkkwJK4jk/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatT&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Thanks a lot. it worked for me.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;discuss.pytorch.org&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;</description>
      <category>오류 핸들링</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/224</guid>
      <comments>https://cccaaa.tistory.com/224#entry224comment</comments>
      <pubDate>Fri, 23 Feb 2024 20:44:25 +0900</pubDate>
    </item>
    <item>
      <title>Insert Delete GetRandom O(1) 풀이</title>
      <link>https://cccaaa.tistory.com/223</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;set 자료구조를 구현하여 Insert, Delete, GetRandom 연산을 O(1)으로 수행할 수 있게 하라는 문제&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;a href=&quot;https://leetcode.com/problems/insert-delete-getrandom-o1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://leetcode.com/problems/insert-delete-getrandom-o1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706507607824&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;LeetCode - The World's Leading Online Programming Learning Platform&quot; data-og-description=&quot;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/insert-delete-getrandom-o1&quot; data-og-url=&quot;https://leetcode.com/problems/insert-delete-getrandom-o1/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yFtcG/hyVceBBI4M/jAuQcRGKgQLYcLQZzqH0q0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/insert-delete-getrandom-o1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/insert-delete-getrandom-o1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yFtcG/hyVceBBI4M/jAuQcRGKgQLYcLQZzqH0q0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;LeetCode - The World's Leading Online Programming Learning Platform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 풀이&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 set 자료형에는 add라는 insert 함수와 remove, discard라는 delete 내장 함수가 존재함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add는 O(1), remove/discard도 O(1).. 파이썬에서 set는 해쉬 테이블로 구현되어 있기 떄문에 삽입연산이나 삭제연산이나 모두 평균 시간복잡도가 O(1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 GetRandom 함수임. 원래 set에서는 pop이라는 O(1)짜리 랜덤 삭제 내장함수가 있지만 여기서는 원소가 삭제되면 안되고, return된 결과값에서 등장한 비율이 일정해야한다는 제한 조건이 있어 인덱싱으로 접근..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의문인 점은 처음에는&lt;/p&gt;
&lt;pre id=&quot;code_1706508859884&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def getRandom(self) -&amp;gt; int:
    return list(self.RS)[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;하니까 틀림.. 알아보니 set를 list로 변환할 때 랜덤한 순서로 배치되는게 아니고, set 자료구조 내 해쉬테이블에 따라 배치된다고 한다.&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;b&gt;코드&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1706508592005&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class RandomizedSet:

    def __init__(self):
        self.RS = set([])

    def insert(self, val: int) -&amp;gt; bool:
        leng = len(self.RS)
        self.RS.add(val)
        return True if len(self.RS) != leng else False

    def remove(self, val: int) -&amp;gt; bool:
        leng = len(self.RS)
        try:
            self.RS.remove(val)
            return True
        except: return False

    def getRandom(self) -&amp;gt; int:
        idx = random.randint(0,len(self.RS)-1)
        return list(self.RS)[idx]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/릿코드 문제풀이</category>
      <category>릿코드 풀이</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/223</guid>
      <comments>https://cccaaa.tistory.com/223#entry223comment</comments>
      <pubDate>Mon, 29 Jan 2024 15:17:45 +0900</pubDate>
    </item>
    <item>
      <title>[paper review] Diffusion Image Analogies 초간단 리뷰</title>
      <link>https://cccaaa.tistory.com/222</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dcgi.fel.cvut.cz/home/sykorad/dia&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dcgi.fel.cvut.cz/home/sykorad/dia&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1698889966281&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;Diffusion Image Analogies&quot; data-og-description=&quot;&quot; data-og-host=&quot;dcgi.fel.cvut.cz&quot; data-og-source-url=&quot;https://dcgi.fel.cvut.cz/home/sykorad/dia&quot; data-og-url=&quot;https://dcgi.fel.cvut.cz/home/sykorad/dia&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dcgi.fel.cvut.cz/home/sykorad/dia&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dcgi.fel.cvut.cz/home/sykorad/dia&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Diffusion Image Analogies&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dcgi.fel.cvut.cz&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;씨그래프 2023에 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Problem Definition&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Image analogies&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이미지 A, A'가 주어졌을 때, A와 A'의 관계를 이해하고 그 관계를 새로운 이미지 B에 적용하여 B'를 만드는 것.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A:A' :: B:B'로 표현함.&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OHAwt/btszDQBCNKl/ZTXFaWvCj0Vd5l5HB3wYw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OHAwt/btszDQBCNKl/ZTXFaWvCj0Vd5l5HB3wYw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OHAwt/btszDQBCNKl/ZTXFaWvCj0Vd5l5HB3wYw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOHAwt%2FbtszDQBCNKl%2FZTXFaWvCj0Vd5l5HB3wYw1%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;713&quot; height=&quot;119&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 논문에서는 이 image analogies를 디퓨전으로 품. 논문에서 제시하는 문제상황은 다음과 같음.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1) image anaologies에 대한 이전 연구들은 low level(pixel)로써 이미지를 이해하기 때문에 higher level인 context를 이해하거나 structure를 바꾸는데 어려움이 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2) 요즘에는 LLM과 Diffusion으로 text-guided 이미지 생성 모델이 핫함. 하지만 원하는 B'를 뽑기 위해서는 text를 사용자가 복잡하게 지시해야하고, text prompt를 복잡하게 준다고 한들 원하는 대로 조작하기 쉽지 않음.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 논문에서는 이런 문제점들을 개선하여 text없이 A:A'의 관계를 바로 B에 적용하여 B'를 생성하는 방식을 제안함.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Method&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 input image A,A',B가 Stable Diffusion으로부터 생성된 이미지라고 가정.&amp;nbsp; 노이즈 이미지 &lt;span style=&quot;color: #000000; text-align: justify;&quot;&gt; &amp;lowast; 에 diffusion process 가 반복적으로 진행되는데, 그때 CLIP features &lt;span style=&quot;color: #000000; text-align: justify;&quot;&gt; &amp;lowast;가 diffusion 과정을 가이드함.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XEsIe/btszGWbflx6/ZAUbkOANuh6qATUwKlgOO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XEsIe/btszGWbflx6/ZAUbkOANuh6qATUwKlgOO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XEsIe/btszGWbflx6/ZAUbkOANuh6qATUwKlgOO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXEsIe%2FbtszGWbflx6%2FZAUbkOANuh6qATUwKlgOO1%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;659&quot; height=&quot;34&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본 논문에서는 생성할 output image B':&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;44&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AsgOY/btszFY1Rqac/n3lnkj1yD6Kb3bLtG1DV3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AsgOY/btszFY1Rqac/n3lnkj1yD6Kb3bLtG1DV3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AsgOY/btszFY1Rqac/n3lnkj1yD6Kb3bLtG1DV3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAsgOY%2FbtszFY1Rqac%2Fn3lnkj1yD6Kb3bLtG1DV3k%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;342&quot; height=&quot;40&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;44&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서  : &amp;prime;는 이미지   와   &amp;prime;의 CLIP features를 뺀 것임&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 임의의 real world 이미지(B)가 있을 때 &lt;span style=&quot;color: #000000; text-align: justify;&quot;&gt;initial noise  &amp;lowast; and CLIP features  &amp;lowast;를 추론해야 하는데, 본 논문에서는 디퓨전을 활용해 optimization함.&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: justify;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l6Cw3/btszC0MxfNb/tLPf3aDosyr95xH39DY9qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l6Cw3/btszC0MxfNb/tLPf3aDosyr95xH39DY9qK/img.png&quot; data-alt=&quot;overview&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l6Cw3/btszC0MxfNb/tLPf3aDosyr95xH39DY9qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl6Cw3%2FbtszC0MxfNb%2FtLPf3aDosyr95xH39DY9qK%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;379&quot; height=&quot;456&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;overview&lt;/figcaption&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;&lt;span style=&quot;color: #000000;&quot;&gt;본 논문에서는 디퓨전 과정에서 clip feature와 initial noise의 정보가 복합적으로 영향을 미치기 때문에, output이 잘 나오는 것처럼 보이더라도 clip feature로 &lt;span style=&quot;color: #000000; text-align: justify;&quot;&gt;semantic 한 의미만을 담지 못하게 된다고 함. 그래서 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: justify; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;initial noise  &amp;lowast; and CLIP features  &amp;lowast;를 독립적으로 최적화 시켜서 이를 해결하고자 했음. 위의 overview 그림 참조&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>논문 리뷰</category>
      <category>논문 리뷰</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/222</guid>
      <comments>https://cccaaa.tistory.com/222#entry222comment</comments>
      <pubDate>Mon, 29 Jan 2024 12:53:48 +0900</pubDate>
    </item>
    <item>
      <title>AI 반도체(GPU, NPU, TPU, 뉴로모픽)</title>
      <link>https://cccaaa.tistory.com/221</link>
      <description>&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&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6gnL/btsDqhQwA8P/OSNeoOSKngmbU8KHwVo350/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6gnL/btsDqhQwA8P/OSNeoOSKngmbU8KHwVo350/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6gnL/btsDqhQwA8P/OSNeoOSKngmbU8KHwVo350/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6gnL%2FbtsDqhQwA8P%2FOSNeoOSKngmbU8KHwVo350%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;896&quot; height=&quot;573&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;GPU&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU는 컴퓨터의 모든 명령을 처리해야 하는 두뇌이기 때문에, 범용 명령어 세트를 처리하기 위한 복잡한 회로로 구성되어 있다. 그래서 다른 AI 반도체에 비해 전력 사용량도 많고, 느리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면에 GPU는 컴퓨터 그래픽을 처리하기 위해 등장해서 병렬적으로 많은 연산을 수행하기 위해 코어수가 많고, 각 코어가 단순한 연산을 수행한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 3D를 2D로 렌더링 한다고 생각했을 때, 매번 2D 픽셀당 해당하는 광량, 위치, 색상, 그림자 등등 병렬적으로 계산할 것이 많음&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;그래서 단순한 계산을 병렬적으로 진행할 수 있는 GPU가 훨씬 속도가 빠르고 효율적이라 GPU로 인공지능 모델을 학습하곤 한다. 이때, CUDA, cudnn, .. 을 이용해 인공지능 연산을 가속화한다. ex) convolution..&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;b&gt;NPU&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU가 단순한 연산을 병렬적으로 처리하긴 하지만, 탄생 자체가 컴퓨터의 그래픽 연산을 처리하기 위함이라, CPU보다는 아니지만 여전히 범용 명령어 처리를 위한 회로로 구성되어 있다. 그래서 인공지능 연산을 주로 처리하기 위한 회로로 구성된 NPU가 등장하게 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전용 회로로 구성되어 있어서 인공지능 모델을 사용할 때 &lt;b&gt;전력 사용량이 줄고&lt;/b&gt;, &lt;b&gt;더 빠르게&lt;/b&gt; 연산을 수행할 수 있다. 전력을 줄이는 것에 집중하기 때문에 &lt;b&gt;소형 디바이스&lt;/b&gt;에서 &lt;b&gt;실시간 연산&lt;/b&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;b&gt;TPU&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TPU는 &lt;b&gt;서버(클라우드)&lt;/b&gt;에 사용하기 위해 구글에서 개발한 AI 반도체이며 일종의 NPU로 AI 연산에 최적화된 반도체이다.&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;b&gt;뉴로모픽 칩&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, 여기서 사용하는 개념을 알기 위해 Computing Memory 개념을 정리해 보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 우리가 알고 있는 컴퓨터의 메모리는 단순히 데이터(값)를 저장하는 공간이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;541&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5hsM5/btsDrialxzG/P8iReofbzBklQ8nl5KFK80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5hsM5/btsDrialxzG/P8iReofbzBklQ8nl5KFK80/img.png&quot; data-alt=&quot;출처 하이닉스 뉴스룸&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5hsM5/btsDrialxzG/P8iReofbzBklQ8nl5KFK80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5hsM5%2FbtsDrialxzG%2FP8iReofbzBklQ8nl5KFK80%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;541&quot; height=&quot;532&quot; data-origin-width=&quot;541&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 하이닉스 뉴스룸&lt;/figcaption&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;그래서 연산은 반도체(CPU)가 하고, 메모리에서 값을 불러오거나 저장하는 식으로 컴퓨터는 동작한다. 다시 말하면, 인공지능을 학습할 때, 반도체를 무엇을 쓰건 간에 메모리에서 데이터를 불러오거나 저장하는 속도인&amp;nbsp; '메모리 대역폭'에 의해 성능의 한계가 생길 수밖에 없다. 그래서 메모리 내에서 연산을 수행하는 Computing Memory를 사용하여 , 반도체가 메모리에 접근하고, 값을 가져오고, 저장하는 부가적인 명령어를 처리하지 않게 해서 성능을 대폭 개선할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSQ7Pv/btsDngrNzyx/AH0pIbN4QGcLaNC4YcoBl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSQ7Pv/btsDngrNzyx/AH0pIbN4QGcLaNC4YcoBl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSQ7Pv/btsDngrNzyx/AH0pIbN4QGcLaNC4YcoBl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSQ7Pv%2FbtsDngrNzyx%2FAH0pIbN4QGcLaNC4YcoBl1%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;891&quot; height=&quot;570&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;570&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;예를 들어, y=wx라는 연산을 수행한다고 하자.(w는 고정된 값)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 컴퓨터, 메모리 구조로는 좌측과 같이 복잡한 연산을 수행해야 한다. 하지만 computing memory를 사용하면 이를 우측 구조처럼 아주 단순한 구조로 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x: 전압, w: 저항의 역수(고정값)가 정해져 있기 때문에, y(w*x)가 아주 빠르게 연산될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LyXON/btsDrCGpG4l/hk4qmxrychbfR3jcTxshKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LyXON/btsDrCGpG4l/hk4qmxrychbfR3jcTxshKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LyXON/btsDrCGpG4l/hk4qmxrychbfR3jcTxshKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLyXON%2FbtsDrCGpG4l%2Fhk4qmxrychbfR3jcTxshKk%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;891&quot; height=&quot;570&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;570&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;이 연산을 여러 번 한다고 생각해 보면, 좌측의 반도체-메모리 간의 연산을 4번 반복하는 것 대신, 우측처럼 단 한 번의 연산으로 훨씬 효율적으로 연산 수를 줄일 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에, 노이즈 등의 문제로 회로가 항상 일정한 wx(i) 값을 보이지 않더라도, 여러 값을 동시에 처리하게 되면, output에서 개별 wx(i)의 노이즈의 영향을 아주 적어져서 정확도에는 별 영향을 끼치지 않을 것이다.&amp;nbsp;&lt;b&gt;&lt;/b&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;ref) &lt;a href=&quot;https://news.skhynix.co.kr/post/jeonginseong-column-ai-6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://news.skhynix.co.kr/post/jeonginseong-column-ai-6&lt;/a&gt;&lt;a href=&quot;https://voidint.com/2020/11/25/gpu-vs-npu-deeplearning-difference/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://voidint.com/2020/11/25/gpu-vs-npu-deeplearning-difference/&lt;/a&gt;&lt;/p&gt;</description>
      <category>인공지능</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/221</guid>
      <comments>https://cccaaa.tistory.com/221#entry221comment</comments>
      <pubDate>Sat, 13 Jan 2024 14:11:26 +0900</pubDate>
    </item>
    <item>
      <title>CUDA란?</title>
      <link>https://cccaaa.tistory.com/220</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인공지능 학습 할 때 CPU 대신 GPU 쓰는 이유? &lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CPU&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터의 두뇌 역할, 모든 읽고 쓰고 실행하는 장치는 CPU를 거쳐서 수행됨. GPU를 사용한 인공지능 학습 시에는 GPU로 연산을 하라고 데이터와 명령 보내주는 역할.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;GPU&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU는 graphic 처리를 위해 등장한 연산장치로 CPU에 비해 몇배나 큰 core 수를 가지고 있음. 근데 이제 그 코어가 단순연산만 함. 그래서 많은 코어를 기반으로 CPU에 비해 병렬연산을 빠르게 수행할 수 있음.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;GPU와 CPU간의 병목&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU의 처리 속도에 비해 GPU가 연산을 너무 빠르게 수행하면 GPU는 CPU가 새로운 데이터를 보내줄 때까지 쉬게 됨.&amp;nbsp; 하드웨어의 전송 속도의 문제로 발생함.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/INv0S/btsCWL6m83n/yk63GnS1IwFTNN2Yjyivx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/INv0S/btsCWL6m83n/yk63GnS1IwFTNN2Yjyivx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/INv0S/btsCWL6m83n/yk63GnS1IwFTNN2Yjyivx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FINv0S%2FbtsCWL6m83n%2Fyk63GnS1IwFTNN2Yjyivx0%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; alt=&quot;processing flow on CUDA&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;290&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;290&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CUDA&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Computed&amp;nbsp;Unified&amp;nbsp;Device&amp;nbsp;Architecture(CUDA)는&amp;nbsp;GPU에서&amp;nbsp;수행하는&amp;nbsp;병렬 연산을&amp;nbsp;프로그래밍&amp;nbsp;언어로&amp;nbsp;작성하여&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;하는&amp;nbsp;기술임.&amp;nbsp;NVIDIA가&amp;nbsp;개발해오고&amp;nbsp;있음.&lt;br /&gt;&lt;br /&gt;그럼&amp;nbsp;인공지능&amp;nbsp;학습&amp;nbsp;환경&amp;nbsp;설정할&amp;nbsp;때&amp;nbsp;설치하는&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CUDA toolkit, Nvidia-dirver, Cudnn은 뭐임?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;nvidia-driver&lt;/b&gt;은 물리적인 nvidia GPU를 컴퓨터가 제어하기 위한 소프트웨어 &lt;br /&gt;&lt;b&gt;CUDA&amp;nbsp;toolkit&lt;/b&gt;은&amp;nbsp;CUDA를&amp;nbsp;통해&amp;nbsp;작성한&amp;nbsp;프로그래밍&amp;nbsp;언어를&amp;nbsp;GPU가&amp;nbsp;돌리기&amp;nbsp;위해&amp;nbsp;필요한&amp;nbsp;모든&amp;nbsp;툴을&amp;nbsp;제공하는&amp;nbsp;kit,&amp;nbsp;ex)&amp;nbsp;CUDA&amp;nbsp;라이브러리,&amp;nbsp;컴파일러,&amp;nbsp;... &lt;br /&gt;&lt;b&gt;cuDNN&lt;/b&gt;은 cuda Deep Neural network Library로 딥러닝 모델 연산을 가속화 할 수 있는 라이브러리임. ex) 컨볼루션, ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>인공지능</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/220</guid>
      <comments>https://cccaaa.tistory.com/220#entry220comment</comments>
      <pubDate>Thu, 4 Jan 2024 12:01:55 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] lv.1 콜라츠 추측 python 풀이</title>
      <link>https://cccaaa.tistory.com/135</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12943&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12943&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696863960206&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/12943&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hjqMy/hyT9KnZKIp/vqvVpF9uogko04i63xkQWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cr5d6V/hyT9CQ1LQz/4vIKUrNtfElWmyJVd49MWk/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/12943&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12943&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hjqMy/hyT9KnZKIp/vqvVpF9uogko04i63xkQWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cr5d6V/hyT9CQ1LQz/4vIKUrNtfElWmyJVd49MWk/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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 풀이&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;코드&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1696863941743&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(num):
    if num==1: return 0
    for i in range(500):
        if num == 1: return i
        if num%2:
            num *= 3
            num += 1
        else: num//=2
        
    return -1&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스 문제풀이</category>
      <category>프로그래머스 풀이</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/135</guid>
      <comments>https://cccaaa.tistory.com/135#entry135comment</comments>
      <pubDate>Sat, 16 Dec 2023 01:06:24 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] lv.2 멀리 뛰기 풀이</title>
      <link>https://cccaaa.tistory.com/218</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12914&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12914&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700402092085&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/12914&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QB6HG/hyUyynLXmt/ywQSgYUwVnWrKKOuMbVhR0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cZoV37/hyUylBWiqB/saoWW5f3wu9Sk9tKPFflw1/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/12914&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12914&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QB6HG/hyUyynLXmt/ywQSgYUwVnWrKKOuMbVhR0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cZoV37/hyUylBWiqB/saoWW5f3wu9Sk9tKPFflw1/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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 풀이&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dp를 설정해 이전값과 그 이전값을 더해주면 됨. 여기서 두 값의 의미는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전값 : 이전 모든 경우에 +1 해주는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이전값: 그 이전값의 모든 경우에 +2 해주는 경우&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;b&gt;코드&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1700402198649&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    dp = [0 for _ in range(n)]
    dp[0] = 1
    if n&amp;gt;1: dp[1] = 2

    for i in range(2,n):
        dp[i] = (dp[i-1] + dp[i-2])%1234567
        
    return dp[-1]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스 문제풀이</category>
      <category>프로그래머스 풀이</category>
      <author>감자156</author>
      <guid isPermaLink="true">https://cccaaa.tistory.com/218</guid>
      <comments>https://cccaaa.tistory.com/218#entry218comment</comments>
      <pubDate>Sun, 19 Nov 2023 22:57:40 +0900</pubDate>
    </item>
  </channel>
</rss>