<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>김로그의 우당탕탕</title>
    <link>https://kimlog1203.tistory.com/</link>
    <description>  kimlog0415@gmail.com</description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 23:04:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>_김로그</managingEditor>
    <image>
      <title>김로그의 우당탕탕</title>
      <url>https://tistory1.daumcdn.net/tistory/8522936/attach/c9d1e8b3082940138b1aec198f1ac992</url>
      <link>https://kimlog1203.tistory.com</link>
    </image>
    <item>
      <title>UE5 강의 12 - C++ 기초 문법 개론 2 [2026.03.21.]</title>
      <link>https://kimlog1203.tistory.com/61</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;C++ 기초 문법 개론
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;반복문 (while문)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;while (조건): 조건 true면 false가 될 때 까지 반복&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 1_1&lt;br /&gt;
&lt;pre id=&quot;code_1774741406804&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;CheckPoint1을 입력과 반복으로 대체
유져 입력을 받는다. &amp;gt; 숫자를 입력하세요(8자리 이하):
숫자의 자리수를 출력
결과 예시: 
숫자를 입력하세요(8자리 이하): 123
3
2
1
입력 예외처리 하지 않음!&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre id=&quot;code_1774746112008&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
    int inputNum = 0;
    int result = 0;
    int cacheNum = 0;

    std::cout &amp;lt;&amp;lt; &quot;숫자를 입력하세요(8자리 이하) :&quot;;
    std::cin &amp;gt;&amp;gt; inputNum;
    std::cout &amp;lt;&amp;lt; std::endl;
    
    cacheNum = inputNum;

    while (cacheNum &amp;gt; 0)
    {
        result = cacheNum % 10;
        std::cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; std::endl;
        cacheNum = cacheNum / 10;
    }
    std::cout &amp;lt;&amp;lt; &quot;시작값: &quot; &amp;lt;&amp;lt; inputNum &amp;lt;&amp;lt; std::endl;
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coXbIA/dJMcaipfid3/CRzn5ebYjk5LK66dQAjPQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coXbIA/dJMcaipfid3/CRzn5ebYjk5LK66dQAjPQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coXbIA/dJMcaipfid3/CRzn5ebYjk5LK66dQAjPQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoXbIA%2FdJMcaipfid3%2FCRzn5ebYjk5LK66dQAjPQk%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;1280&quot; height=&quot;201&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 3&lt;br /&gt;
&lt;pre id=&quot;code_1774746206581&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;10~51번의 수를 4,5,5,  4,5,5,  4,5,5의 순서로 나누어서 출력

결과값:
10 11 12 13
14 15 16 17 18
19 20 21 22 23
24 25 26 27
28 29 30 31 32
33 34 35 36 37
38 39 40 41
42 43 44 45 46
47 48 49 50 51&lt;/code&gt;&lt;/pre&gt;
&amp;nbsp;&lt;br /&gt;
&lt;pre id=&quot;code_1774747903321&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int newLineNum = 13;
	int group = 1;
	
	for (int i = 10; i &amp;lt;= 51; i++)
	{
		std::cout &amp;lt;&amp;lt; i  &amp;lt;&amp;lt; &quot; &quot;;
		if (i &amp;gt;= newLineNum)
		{
			if (group % 3 == 0)
			{
				newLineNum += 4;
			}
			else
			{
				newLineNum += 5;
			}
		std::cout &amp;lt;&amp;lt; std::endl;
		++group;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&amp;nbsp;&amp;nbsp;&lt;img style=&quot;color: #333333; text-align: start;&quot; src=&quot;https://blog.kakaocdn.net/dna/mvdM8/dJMcaivXWtg/AAAAAAAAAAAAAAAAAAAAAKtEzf3jGgHKLBvT3cMiKkOLqElSRO1Fh2piqvyxv2Vv/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=pRxI3AMZdMDvTv3jyei8NPA5Yts%3D&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;286&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 4(구구단 출력)&lt;br /&gt;
&lt;pre id=&quot;code_1774748228438&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	for (int i = 2; i &amp;lt;= 9; i++)
	{
		for (int j = 1; j &amp;lt;= 9; j++)
		{
			std::cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;X&quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &quot;=&quot; &amp;lt;&amp;lt; i * j &amp;lt;&amp;lt; &quot; &quot;;
		}
		std::cout &amp;lt;&amp;lt; std::endl;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/bWx7J0/dJMcahjAGl0/AAAAAAAAAAAAAAAAAAAAAIT7Iyc1P5YthEXTeQx9xND46iMRWPFvbKBvm-LvcDQR/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=aWM03O92v6hx4Larf%2F1%2FNfn2w%2Fk%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;261&quot; data-origin-width=&quot;1482&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre id=&quot;code_1774748370650&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	for (int j = 1; j &amp;lt;= 9; j++)
	{
		for (int i = 2; i &amp;lt;= 9; i++)
		{
			std::cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;X&quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &quot;=&quot; &amp;lt;&amp;lt; i * j &amp;lt;&amp;lt; &quot; &quot;;
		}
		std::cout &amp;lt;&amp;lt; std::endl;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/kQ8m6/dJMcajuSEp2/AAAAAAAAAAAAAAAAAAAAAD95j8gTAdg-KI9sVAAKR1Ecihv2L34H4Wf-VEyteMdu/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=2eM7P4F6dAWUv1wcr6raioYBvNY%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;282&quot; data-origin-width=&quot;1482&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 5(다이아몬드 패턴)&lt;br /&gt;
&lt;pre id=&quot;code_1774749988594&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int countStar = 7;
	int countBlank = 0;

	// Top
	{
		for (int i = 0; i &amp;lt; 4; i++)
		{
			for (int j = 0; j &amp;lt; countBlank; j++)
			{
				std::cout &amp;lt;&amp;lt; &quot; &quot;;
			}
			for (int k = 0; k &amp;lt; countStar; k++)
			{
				std::cout &amp;lt;&amp;lt; &quot;*&quot;;
			}
			countStar -= 2;
			++countBlank;
			std::cout &amp;lt;&amp;lt; std::endl;
		}
	}
	//Bottom
	{
		countStar = 3;
		countBlank = 2;
		for (int i = 0; i &amp;lt; 3; i++)
		{
			for (int j = 0; j &amp;lt; countBlank; j++)
			{
				std::cout &amp;lt;&amp;lt; &quot; &quot;;
			}
			for (int k = 0; k &amp;lt; countStar; k++)
			{
				std::cout &amp;lt;&amp;lt; &quot;*&quot;;
			}
			countStar += 2;
			--countBlank;
			std::cout &amp;lt;&amp;lt; std::endl;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/bNLBk4/dJMcafTAqMM/AAAAAAAAAAAAAAAAAAAAADUQ4OPhLZkLusUa8w1c3d5I3yutIch1cJzInMUHBFSB/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=dqLu4PjkrWistjDeP3OHThARH7Y%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;234&quot; data-origin-width=&quot;1483&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;반복문 제어(break, continue)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;반복문 중간에 특정 조건이 달성 되었을 때 반복을 끝내거나(break) 현재 반복을 건너 뛸(continue) 수 있다.&lt;br /&gt;
&lt;pre id=&quot;code_1774750602287&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	for (int i = 1; i &amp;lt;= 10; i++)
	{
		if (i == 2)
		{
			continue; // 숫자 2는 출력하지 않기
		}
		if (i &amp;gt; 8)
		{
			break; // 8까지만 출력하고 9, 10은 출력하지 않기
		}
		std::cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; std::endl;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/sfRqE/dJMcaduCYw5/AAAAAAAAAAAAAAAAAAAAAPTLVVR4je7xg5EaohZdauZDTz-WcE_0ej2J6fMlXaif/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=7VwPWNKP0BdM%2FHzfr89PGFkv6lw%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;234&quot; data-origin-width=&quot;1483&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;배열&lt;br /&gt;
&lt;pre id=&quot;code_1774751271089&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	// 1차원 배열
	{
		int arrNums[3] = { 0, 1, 2 };
		int arrNum2[3] = { 0, }; // arrNum2[3]={0, 0, 0}
		int arrNum3[] = { 0, 1, 2, 3 }; // arrNum3[4]={0, 1, 2, 3}
		int arrNum4[5]; // arrNum4[5] = {쓰레기값(=임의의 값) 5개}

		for (int i = 0; i &amp;lt; 3; i++)
		{
			std::cout &amp;lt;&amp;lt; &quot;i: &quot; &amp;lt;&amp;lt; arrNums[i] &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; std::endl;
		}
	}

	// 2차원 배열
	{
		int arrNum5[3][2] = { {1, 2}, {3, 4}, {5, 6} };

		for (int i = 0; i &amp;lt; 3; i++)
		{
			for (int j = 0; j &amp;lt; 2; j++)
			{
				std::cout &amp;lt;&amp;lt; &quot;i: &quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;, j: &quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &quot; == &quot; &amp;lt;&amp;lt; arrNum5[i][j] &amp;lt;&amp;lt; std::endl;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2plsy/dJMcagEYDgv/L64R7btRbHgW0h765fQtck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2plsy/dJMcagEYDgv/L64R7btRbHgW0h765fQtck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2plsy/dJMcagEYDgv/L64R7btRbHgW0h765fQtck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2plsy%2FdJMcagEYDgv%2FL64R7btRbHgW0h765fQtck%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;1482&quot; height=&quot;287&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 6&lt;br /&gt;
&lt;pre id=&quot;code_1774787723265&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;구구단 몇단을 보여 드릴까요(2 ~ 9)0번입력하면 나가기: 2
결과값: 2 * 1= 2  2 * 2= 4 2 * 3= 6 2 * 4= 9  2 * 9= 18
결과값을 캐싱해서 처리.
1차원 배열로 캐싱(미리 저장)하기(72개의 결과값(구구단))&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre id=&quot;code_1774789258763&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int arrResults[72] = { 0, };
	int index = 0;
	int result = 0;
	int inputNum = 0;

	// 구구단 생성
	{

		for (int i = 2; i &amp;lt; 10; i++)
		{
			for (int j = 1; j &amp;lt; 10; j++)
			{
				result = i * j;
				arrResults[index] = result;
				++index;
			}
		}
	}
	// 사용자 입력
	{

		while (true)
		{
			std::cout &amp;lt;&amp;lt; &quot;구구단 몇 단을 보여드릴까요(2~9) 0번 입력하면 나가기: &quot;;
			std::cin &amp;gt;&amp;gt; inputNum;
			std::cout &amp;lt;&amp;lt; std::endl;
			if (inputNum == 0)
			{
				break;
			}
			else if (inputNum &amp;lt; 2 || inputNum &amp;gt; 9)
			{
				std::cout &amp;lt;&amp;lt; &quot;2~9 사이를 입력하세요&quot;;
				std::cout &amp;lt;&amp;lt; std::endl;
			}
			else 
			{
				for (int i = 0; i &amp;lt; 9; i++)
				{
					int indexResult = ((inputNum - 2) * 9) + i;
					int cacheResult = arrResults[indexResult];
					std::cout &amp;lt;&amp;lt; inputNum &amp;lt;&amp;lt; &quot;X&quot; &amp;lt;&amp;lt; i + 1 &amp;lt;&amp;lt; &quot;=&quot; &amp;lt;&amp;lt; cacheResult &amp;lt;&amp;lt; &quot; &quot;;
				}
				std::cout &amp;lt;&amp;lt; std::endl;
				break;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/du15Vc/dJMcah4Wt1S/AAAAAAAAAAAAAAAAAAAAAIJyusMZ7uBRP2UKJwyVs9fQpzrVWk2KMxwg_-I_X0FL/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=pJMP2Pc4bXBR6ELrdQ2XVPVnkdQ%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;148&quot; data-origin-width=&quot;1482&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 7&lt;br /&gt;
&lt;pre id=&quot;code_1774789864696&quot; class=&quot;markdown&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;CheckPoint6에 결과값 캐싱을 2차원 배열로 변경 후 처리
int arrResults[8][9];&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre id=&quot;code_1774789873938&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int arrResults[8][9];
	int index = 0;
	int result = 0;
	int inputNum = 0;

	// 구구단 생성
	{
		for (int i = 0; i &amp;lt; 8; i++)
		{
			for (int j = 0; j &amp;lt; 9; j++)
			{
				result = (i+2) * (j+1);
				arrResults[i][j] = result;
				++index;
			}
		}
	}
	// 사용자 입력
	{
		while (true)
		{
			std::cout &amp;lt;&amp;lt; &quot;구구단 몇 단을 보여드릴까요(2~9) 0번 입력하면 나가기: &quot;;
			std::cin &amp;gt;&amp;gt; inputNum;
			std::cout &amp;lt;&amp;lt; std::endl;
			if (inputNum == 0)
			{
				break;
			}
			else if (inputNum &amp;lt; 2 || inputNum &amp;gt; 9)
			{
				std::cout &amp;lt;&amp;lt; &quot;2~9 사이를 입력하세요&quot;;
				std::cout &amp;lt;&amp;lt; std::endl;
			}
			else
			{
				for (int i = 0; i &amp;lt; 9; i++)
				{
					int cacheResult = arrResults[inputNum-2][i];
					std::cout &amp;lt;&amp;lt; inputNum &amp;lt;&amp;lt; &quot;X&quot; &amp;lt;&amp;lt; i + 1 &amp;lt;&amp;lt; &quot;=&quot; &amp;lt;&amp;lt; cacheResult &amp;lt;&amp;lt; &quot; &quot;;
				}
				std::cout &amp;lt;&amp;lt; std::endl;
				break;
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/bju0zQ/dJMcaakq9E6/AAAAAAAAAAAAAAAAAAAAAOvIHdqqt7CBeZuomgn29SEh7as0TI-T2__ZOZrScdRE/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=I2%2FDIkzRv0bdFQHP1zPN5%2B6h4Uc%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;153&quot; data-origin-width=&quot;1482&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어려웠던 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;수업 중에 바로바로 하기에는 아직 시간이 부족했다. 집에서 복습할 때는 괜찮았다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배운 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;for에서 사용하는 i는 왠만하면 0부터 시작하는게 일관적인 판단을 하는데 도움이 되는 것 같다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해야 할 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal Engine</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/61</guid>
      <comments>https://kimlog1203.tistory.com/61#entry61comment</comments>
      <pubDate>Sun, 29 Mar 2026 22:20:37 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 6 [2026.03.29.]</title>
      <link>https://kimlog1203.tistory.com/60</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569447775&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;처리 중/삭제 중 모달 아이콘 적용 (&lt;code&gt;gui/result_panel.py&lt;/code&gt;)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;삭제 중...&quot; / &quot;처리 중...&quot; 두 &lt;code&gt;Toplevel&lt;/code&gt; 다이얼로그에 앱 아이콘 적용&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sys._MEIPASS&lt;/code&gt; 패턴으로 PyInstaller 환경과 개발 환경 모두 대응&lt;/li&gt;
&lt;li&gt;&lt;code&gt;import sys&lt;/code&gt; 추가
&lt;ol style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;스캔 중 설정 위젯 비활성화 (&lt;code&gt;gui/scan_panel.py&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;스캔 시작 시 아래 위젯 전체 비활성화:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;폴더 선택 버튼&lt;/li&gt;
&lt;li&gt;하위 폴더 포함 체크박스&lt;/li&gt;
&lt;li&gt;파일 종류 체크박스 (이미지 / 영상 / 오디오 / 전체 파일)&lt;/li&gt;
&lt;li&gt;유사 이미지 검색 체크박스 + 민감도 슬라이더&lt;/li&gt;
&lt;li&gt;언어 전환 버튼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;스캔 종료 시 모든 위젯 복원 (&lt;code&gt;_on_all_files_toggle()&lt;/code&gt; 호출로 전체 파일 모드 상태에 따라 올바르게 복원)&lt;/li&gt;
&lt;li&gt;폴더 선택 버튼(&lt;code&gt;_folder_btn&lt;/code&gt;), 하위 폴더 체크박스(&lt;code&gt;_recursive_cb&lt;/code&gt;)를 인스턴스 변수로 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569451474&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/60</guid>
      <comments>https://kimlog1203.tistory.com/60#entry60comment</comments>
      <pubDate>Sun, 29 Mar 2026 01:07:45 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 5 [2026.03.28.]</title>
      <link>https://kimlog1203.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569430203&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;UX 수정
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;scan_panel.py 위젯 Top 정렬 통일(anchor='n'), 민감도(라벨+슬라이더) 수직 위치 조정&lt;code&gt;pady&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;폴더 내 모든 파일에 대한 MD5 비교 가능한 기능 추가
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;회사에 중복된 캐드파일이 많아서 그 때 사용하려고 확장자 상관 없이 MD5 비교하는 기능을 추가했다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;최종 코드 검토
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;중복 코드
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;result_panel.py&lt;/code&gt; 원본 파일 판별 점수 계산 로직이 중복됨(단일 그룹 / 일괄 처리에서 각각 쓰임) &amp;rarr; &lt;code&gt;score()&lt;/code&gt; 함수를 모듈 레벨 &lt;code&gt;_score_file(fp)&lt;/code&gt;로 추출해서 양쪽에서 호출하는 방식으로 변경&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;성능
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;scanner.py&lt;/code&gt; 유사도 비교 시 느려질 수 있음. &amp;rarr; 사용자가 중간에 일시정지/또는 취소를 눌렀을 때 일정 간격(500번)으로 일시정지/취소 유무 확인 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;icon 제작&lt;/li&gt;
&lt;li&gt;배포(github pulic말고 그냥 &lt;code&gt;.exe&lt;/code&gt;로 배포)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;UX 수정
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기능 추가에 의해 버튼이 정리된 것 같지 않아보여 배치 수정&lt;/li&gt;
&lt;li&gt;main_window 크기가 바뀌면 후원하기 버튼이 사라져서[!] 사라지지 않도록 수정했다.&lt;/li&gt;
&lt;li&gt;민감도 슬라이더의 시각적 수직 위치를 조절할 때 꽤 애먹었다. top을 맞춰달라고 했더니 슬라이더를 낮추는게 아니고 '민감도'라는 글자를 올려버려서 민감도+슬라이더를 다른 위젯과 동일한 높이로 만들어달라하자 다른 위젯을 높여버렸다. 결국은 전부 높인게 괜찮아보여서 scan_panel의 위젯들을 anchor='n'처리했다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569435778&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/59</guid>
      <comments>https://kimlog1203.tistory.com/59#entry59comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:35:40 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 4 [2026.03.27.]</title>
      <link>https://kimlog1203.tistory.com/58</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569408544&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;국문, 영문 지원
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;다국어 지원을 위해 i18n 생성. 한글로 하드코딩되어있던 것을 전부 딕셔너리 key처리해서 언어가 전환되는 버튼이 눌리면 언어가 변경됨(한글&amp;harr;영문)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;최종 코드 검토&lt;/li&gt;
&lt;li&gt;README 작성&lt;/li&gt;
&lt;li&gt;github public으로 바꾸기&lt;/li&gt;
&lt;/ol&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;figure id=&quot;og_1775569413300&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/58</guid>
      <comments>https://kimlog1203.tistory.com/58#entry58comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:34:10 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 3 [2026.03.26.]</title>
      <link>https://kimlog1203.tistory.com/57</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569388259&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;PayPal &amp;rarr; contact 페이지 후원 버튼&lt;/li&gt;
&lt;li&gt;커스텀 폴더 선택 다이얼로그 구현&lt;/li&gt;
&lt;li&gt;취소 시 진행바 초기화&lt;/li&gt;
&lt;li&gt;타입 힌트/import 일관성 수정&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;국문, 영문 지원&lt;/li&gt;
&lt;li&gt;최종 코드 검토&lt;/li&gt;
&lt;li&gt;README 작성&lt;/li&gt;
&lt;li&gt;github public으로 바꾸기&lt;/li&gt;
&lt;/ol&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;figure id=&quot;og_1775569394654&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/57</guid>
      <comments>https://kimlog1203.tistory.com/57#entry57comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:33:22 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 2 [2026.03.23.]</title>
      <link>https://kimlog1203.tistory.com/56</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569369171&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;오디오 파일 지원 추가&lt;/li&gt;
&lt;li&gt;재생 버튼 추가&lt;/li&gt;
&lt;li&gt;단위 &lt;code&gt;장&lt;/code&gt; &amp;rarr; &lt;code&gt;개&lt;/code&gt; 통일&lt;/li&gt;
&lt;li&gt;미사용 &lt;code&gt;_delete_all&lt;/code&gt; 메서드 제거&lt;/li&gt;
&lt;li&gt;영상, 오디오 파일 지원이 추가되었으니 CLAUDE.md 전면 재작성&lt;/li&gt;
&lt;li&gt;실제로 사용해서 복구한 하드 內 완전 일치하는 복제 파일 전체 삭제&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;파일 선택 시 폴더 선택하는 단에서 끝나게 하고 싶다&lt;/li&gt;
&lt;/ol&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;figure id=&quot;og_1775569374320&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/56</guid>
      <comments>https://kimlog1203.tistory.com/56#entry56comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:32:36 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder 1 [2026.03.22.]</title>
      <link>https://kimlog1203.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569339322&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;앱 전체 초기 구현 (스캔 엔진, GUI 기본 구조)&lt;/li&gt;
&lt;li&gt;개별 카드 삭제 버튼 추가 &amp;rarr; 바로 제거하고 일괄 삭제로 교체&lt;/li&gt;
&lt;li&gt;폰트 theme.py 중앙 관리로 리팩토링&lt;/li&gt;
&lt;li&gt;대용량 폴더 대응 (일시중지/재개, 50개 카드 상한)&lt;/li&gt;
&lt;li&gt;삭제 진행 다이얼로그 추가&lt;/li&gt;
&lt;li&gt;영상 파일 지원 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;막힌 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;다중 선택 시 마우스 휠 스크롤이 안됨&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음에 할 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;오디오 파일 지원&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569355297&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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>Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/55</guid>
      <comments>https://kimlog1203.tistory.com/55#entry55comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:25:44 +0900</pubDate>
    </item>
    <item>
      <title>중복된 파일 찾기 Duplicate Finder</title>
      <link>https://kimlog1203.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1775569318618&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog.pages.dev&quot; data-og-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog1203.netlify.app/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog.pages.dev/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6HHkt/dJMb8WeAqGb/4HEED9y5OU2kER5cBlkkxK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog.pages.dev&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;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python Tkinter 기반 로컬 파일 중복 탐지 데스크탑 앱&lt;/li&gt;
&lt;li&gt;MD5 해시(완전 동일)와 pHash(유사 이미지) 2단계 스캔 방식&lt;/li&gt;
&lt;li&gt;이미지 / 영상 / 오디오 / 전체 파일(확장자 무관) 지원&lt;/li&gt;
&lt;li&gt;삭제는 휴지통 이동 방식으로 안전하게 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;제작 동기&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수만 장의 사진이 쌓인 HDD를 정리하려 했으나 기존 중복 탐지 툴은 대부분 유료&lt;/li&gt;
&lt;li&gt;어차피 만들어야 한다면 직접 만들어서 배포까지 해보자는 생각으로 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;목표 설정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업 기간: 2026.03.22. ~ 2026.03.28.&lt;/li&gt;
&lt;li&gt;목표
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전 동일 / 유사 파일을 자동으로 탐지하고 비교 후 삭제할 수 있는 GUI 앱&lt;/li&gt;
&lt;li&gt;실수로 파일을 삭제하는 사고 방지 (휴지통 이동, 확인 다이얼로그)&lt;/li&gt;
&lt;li&gt;.exe 배포로 일반 사용자도 사용 가능하도록 만들기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 작업&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;앱 전체 구조 설계 및 구현 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;scanner.py&lt;/code&gt; &amp;mdash; MD5(완전 동일) + pHash(유사 이미지) 2단계 스캔 엔진&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gui/&lt;/code&gt; &amp;mdash; 폴더 선택, 진행률, 결과 목록, 미리보기 패널 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;결과 화면 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전 중복 / 유사 중복 탭 분리&lt;/li&gt;
&lt;li&gt;각 파일 카드에 썸네일(이미지), 파일명, 용량, 날짜 표시&lt;/li&gt;
&lt;li&gt;이미지: 썸네일 클릭으로 OS 기본 뷰어 열기&lt;/li&gt;
&lt;li&gt;영상/오디오: 재생 버튼으로 OS 기본 플레이어 열기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;삭제 기능 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;체크박스로 개별 선택 후 일괄 삭제&lt;/li&gt;
&lt;li&gt;원본 유지 버튼 &amp;mdash; 해상도 높은 것 기준으로 나머지 자동 선택&lt;/li&gt;
&lt;li&gt;모든 삭제는 휴지통 이동 (복구 가능)&lt;/li&gt;
&lt;li&gt;삭제 중 진행 다이얼로그 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;대용량 폴더 대응 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스캔 중 일시중지 / 재개 기능 (대용량 폴더 스캔 대비)&lt;/li&gt;
&lt;li&gt;백그라운드 스레드로 스캔 &amp;mdash; GUI 프리징 없음&lt;/li&gt;
&lt;li&gt;카드 50개 초과 시 일괄 처리 패널로 전환 (앱 응답 없음 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;다중 그룹 선택 및 일괄 처리 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ctrl+클릭 / Shift+클릭으로 그룹 다중 선택&lt;/li&gt;
&lt;li&gt;다중 선택 시 &quot;원본 유지 후 나머지 삭제&quot; 일괄 처리 (백그라운드)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파일 형식 지원 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 / 영상 / 오디오 체크박스로 검색 대상 선택&lt;/li&gt;
&lt;li&gt;전체 파일(확장자 무관) MD5 스캔 모드 추가&lt;/li&gt;
&lt;li&gt;영상/오디오 포함 시 유사 이미지 검색 자동 비활성화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;안정성 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경로 탈출 방지, 네트워크 요청 없음, 위험 코드 패턴 없음&lt;/li&gt;
&lt;li&gt;보안 검토 절차 자동화 (코드 수정 시 매번 실행)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UX 개선 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커스텀 폴더 선택 다이얼로그 (더블클릭으로 하위폴더 없는 폴더 바로 선택)&lt;/li&gt;
&lt;li&gt;취소 시 진행바 자동 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;다국어 지원 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한/영 언어 전환 버튼 (앱 재시작 없이 즉시 전환)&lt;/li&gt;
&lt;li&gt;언어별 폰트 자동 적용 (ko: 맑은 고딕, en: Segoe UI)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;배포 ✅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;후원 버튼 &amp;rarr; Contact 페이지 연결&lt;/li&gt;
&lt;li&gt;전체 코드 최종 보안 검토 완료&lt;/li&gt;
&lt;li&gt;PyInstaller로 단일 .exe 패키징 (GitHub Releases 배포)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;로컬에서 완전히 동작하는 파일 중복 탐지 앱 완성&lt;/li&gt;
&lt;li&gt;.exe 배포 완료 (GitHub Releases)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAPW0U/dJMcaaLviWG/NF1DeDn3ggWKWNpZINAa9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAPW0U/dJMcaaLviWG/NF1DeDn3ggWKWNpZINAa9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAPW0U/dJMcaaLviWG/NF1DeDn3ggWKWNpZINAa9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAPW0U%2FdJMcaaLviWG%2FNF1DeDn3ggWKWNpZINAa9K%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;1102&quot; height=&quot;772&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bty4wC/dJMcabKrlwg/YN7QXoKIIxlxDuiXUbjF7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bty4wC/dJMcabKrlwg/YN7QXoKIIxlxDuiXUbjF7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bty4wC/dJMcabKrlwg/YN7QXoKIIxlxDuiXUbjF7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbty4wC%2FdJMcabKrlwg%2FYN7QXoKIIxlxDuiXUbjF7K%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;1102&quot; height=&quot;772&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;772&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;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1774708048470&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;중복된 파일 찾기 Duplicate Finder&quot; data-og-description=&quot;요약&quot; data-og-host=&quot;kimlog0415.github.io&quot; data-og-source-url=&quot;https://kimlog0415.github.io/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-url=&quot;https://kimlog0415.github.io/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bidWa0/dJMb8WMpupA/iLS09UgDecJO7CaAoUbKkK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536&quot;&gt;&lt;a href=&quot;https://kimlog0415.github.io/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimlog0415.github.io/devlog/apps/Duplicate%20Finder/%EC%A4%91%EB%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0%20Duplicate%20Finder%200/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bidWa0/dJMb8WMpupA/iLS09UgDecJO7CaAoUbKkK/img.png?width=1536&amp;amp;height=1536&amp;amp;face=0_0_1536_1536');&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;중복된 파일 찾기 Duplicate Finder&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;kimlog0415.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Related Posts&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/55&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 1 [2026.03.22.]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/56&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 2 [2026.03.23.]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 3 [2026.03.26.]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/58&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 4 [2026.03.27.]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 5 [2026.03.28.]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog1203.tistory.com/60&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Apps] - 중복된 파일 찾기 Duplicate Finder 6 [2026.03.29.]&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Apps/Apps</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/54</guid>
      <comments>https://kimlog1203.tistory.com/54#entry54comment</comments>
      <pubDate>Sat, 28 Mar 2026 23:21:25 +0900</pubDate>
    </item>
    <item>
      <title>UE5 강의 11 - C++ 기초 문법 개론 1 [2026.03.14.]</title>
      <link>https://kimlog1203.tistory.com/53</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;C++ 기초 문법 개론
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;비주얼스튜디오2022 설치&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWhNIa/dJMcadBnab3/KZ8Si9niE2LIkm7JzkL2jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWhNIa/dJMcadBnab3/KZ8Si9niE2LIkm7JzkL2jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWhNIa/dJMcadBnab3/KZ8Si9niE2LIkm7JzkL2jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWhNIa%2FdJMcadBnab3%2FKZ8Si9niE2LIkm7JzkL2jk%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;1082&quot; height=&quot;632&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;[실습] Hello World&lt;br /&gt;
&lt;pre id=&quot;code_1774697718410&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	std::cout &amp;lt;&amp;lt; &quot;Hello World&quot;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w7MhA/dJMcahqkyLc/Er73FPUd9y85A7QTsGlKtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w7MhA/dJMcahqkyLc/Er73FPUd9y85A7QTsGlKtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w7MhA/dJMcahqkyLc/Er73FPUd9y85A7QTsGlKtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw7MhA%2FdJMcahqkyLc%2FEr73FPUd9y85A7QTsGlKtk%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;1115&quot; height=&quot;628&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;변수, 자료형&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.233%; height: 218px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Data Type&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Size(Byte)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;int&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-2,147,483,648 ~ 2,147,483,647&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;unsigned int&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;0 ~ 4,294,967,295&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;bool&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;false / true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;char&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-128 ~ 127, ANSI 문자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;short&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-32,768 ~ 32,767&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;unsigned short&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;0 ~ 65,535&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;long&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-2,147,483,648 ~ 2,147,483,647&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;unsigned long&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;0 ~ 4,294,967,295&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;long long&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;unsigned long long&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;0 ~ 18,446,744,073,709,551,615&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;float&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-3.4 * 10^38 ~ 3.4 * 10^38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;double&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;-1.7 * 10^308 ~ 1.7 * 10^308&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;산술연산자(+, -, *, /, %)&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint1&lt;br /&gt;
&lt;pre id=&quot;code_1774620673747&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;/*
CheckPoint1
5423 숫자가 있다.
각 자리의 숫자를 출력하라
결과값
*/
3
2
4
5

시작값: 5423&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre id=&quot;code_1774620689492&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int num = 5423;
	int result = 0;
	int cacheNum = 0;

	cacheNum = num;

	result = cacheNum % 10;
	std::cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; std:: endl;
	cacheNum = cacheNum / 10;

	result = cacheNum % 10;
	std::cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; std:: endl;
	cacheNum = cacheNum / 10;

	result = cacheNum % 10;
	std::cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; std:: endl;
	cacheNum = cacheNum / 10;

	result = cacheNum % 10;
	std::cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; std:: endl;
	cacheNum = cacheNum / 10;

	std::cout &amp;lt;&amp;lt; &quot;시작값: &quot; &amp;lt;&amp;lt; num;
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/bVFgna/dJMcaf65VDS/AAAAAAAAAAAAAAAAAAAAAHux91zt_2MRZ8TEWzi6MVcbByHI6lrqdKEBu-VrLsQc/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=D43NekMosaTpMzMEGhK3nfaXVfw%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;628&quot; data-origin-width=&quot;1115&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;비교문(분기문): if, else, ==, &amp;lt;=, &amp;gt;=, !=, &amp;lt;, &amp;gt;, &amp;amp;&amp;amp;, ||, switch&lt;/li&gt;
&lt;li&gt;[실습] CheckPoint 2&lt;br /&gt;
&lt;pre id=&quot;code_1774620967421&quot; class=&quot;1c&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;// 정답: 56
&quot;숫자를 입력하세요(1 ~ 99): &quot;
//TODO: 1 ~ 99의 숫자가 아닌 경우 에러 출력(1 ~ 99에 숫자를 입력하세요!!)
&quot;입력오류 &amp;gt; 1 ~ 99에 숫자를 입력하세요!!&quot;
&quot;정답보다 입력값이 커요&quot;
&quot;정답보다 입력값이 작아요&quot;
&quot;정답입니다.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre id=&quot;code_1774697570857&quot; class=&quot;cpp&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

void main()
{
	int num = 56;
	int inputNum = 0;

	while (true)
	{

		std::cout &amp;lt;&amp;lt; &quot;숫자를 입력하세요(1~99): &quot;;
		std::cin &amp;gt;&amp;gt; inputNum;
		if (inputNum &amp;lt; 1 || inputNum &amp;gt;99) {
			std::cout &amp;lt;&amp;lt; &quot;1~99사이의 숫자를 입력하세요!!&quot; &amp;lt;&amp;lt; std::endl;
		}

		if (inputNum &amp;lt; num)
		{
			std::cout &amp;lt;&amp;lt; &quot;정답보다 입력값이 작아요&quot; &amp;lt;&amp;lt; std::endl;
		}
		else if (inputNum &amp;gt; num)
		{
			std::cout &amp;lt;&amp;lt; &quot;정답보다 입력값이 커요&quot; &amp;lt;&amp;lt; std::endl;
		}
		else
		{
			std::cout &amp;lt;&amp;lt; &quot;정답입니다.&quot; &amp;lt;&amp;lt; std::endl;
			break;
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dna/X9oUP/dJMcajhkcan/AAAAAAAAAAAAAAAAAAAAAGM-I542qtNqf05Zk-DG2g8tywh_nZ_H35DCaeRjIvIY/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=BWRKv1cnWZ9vAeRiXtLVVkyUpSE%3D&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;628&quot; data-origin-width=&quot;1115&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어려웠던 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;C++이 처음이라 언어 자체에 적응하는게 어려웠다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배운 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Window에서 int와 long은 둘 다 4 byte이기 때문에 range가 같다. 그러나 Linux / macOS 등에서는 long이 8 byte라서 `short &amp;le; int &amp;le; long &amp;le; long long` 이다. 그래서 OS마다 크기가 달라지면 버그가 발생될 수 있어서 int32(4 byte), int64(8 byte)를 사용한다.&lt;/li&gt;
&lt;li&gt;문자열&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1774620253721&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char a = 'h';        // (O) 한 글자는 홑따옴표
string b = &quot;hello&quot;;  // (O) 여러 글자는 쌍따옴표

char c = &quot;h&quot;;        // (X) 
char d = 'hello';    // (X)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해야 할 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. C++ 복습&lt;/p&gt;</description>
      <category>Unreal Engine</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/53</guid>
      <comments>https://kimlog1203.tistory.com/53#entry53comment</comments>
      <pubDate>Sat, 28 Mar 2026 20:36:31 +0900</pubDate>
    </item>
    <item>
      <title>UE5 강의 7 - UMG, 카메라 [2026.02.07.]</title>
      <link>https://kimlog1203.tistory.com/52</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;[실습] NRBP(Number Run BluePrint)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://kimlog0415.github.io/devlog/ue5/Number%20Run/Unreal%20Engine%205%20Dev%20Log%2010%20%E2%80%95%20Number%20Run%200/&quot;&gt;DevLog 보기&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어려웠던 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배운 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;랭크를 정하는 알고리즘. 나보다 큰 숫자가 몇 개인지 확인한 뒤 그게 0이면 1등.&lt;/li&gt;
&lt;li&gt;배열의 Find는 일부만 일치하는게 아니라 온전히 일치하는 것만 찾아준다.&lt;/li&gt;
&lt;li&gt;구조체를 이용할 때 일부만 변경하는 경우 Break, Set members in~을 이용해야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해야 할 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/a-SI0Rz9B8w?si=c1R8_QNEzro68j38&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/a-SI0Rz9B8w?si=c1R8_QNEzro68j38&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=a-SI0Rz9B8w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/jKEBH/dJMb9cBHEI7/O7yjnWn3QEpO1t8cupkaJ1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/eFl02/dJMb9cBHEI6/c7uoU4zUIDkCMpJKl0VZz0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/ApSgp/dJMb9jOmuAx/ob4no61xMtBUzGptUpF2j0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Unreal Engine 5 Dev Log ― 숫자 달리기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/a-SI0Rz9B8w&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal Engine</category>
      <author>_김로그</author>
      <guid isPermaLink="true">https://kimlog1203.tistory.com/52</guid>
      <comments>https://kimlog1203.tistory.com/52#entry52comment</comments>
      <pubDate>Tue, 24 Mar 2026 23:50:49 +0900</pubDate>
    </item>
  </channel>
</rss>