<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>프밍노트</title>
    <link>https://programing-note.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 16 Apr 2026 14:14:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개발서 작성</managingEditor>
    <image>
      <title>프밍노트</title>
      <url>https://tistory1.daumcdn.net/tistory/4147968/attach/514c943d731a41389239c188e0f85db2</url>
      <link>https://programing-note.tistory.com</link>
    </image>
    <item>
      <title>C# List&amp;lt;T&amp;gt;의 최적화</title>
      <link>https://programing-note.tistory.com/entry/C-ListT%EC%9D%98-%EC%B5%9C%EC%A0%81%ED%99%94</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;1071&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xZbQ4/dJMcabJxBUW/gzlIlWYOpKXK97tdUd5GUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xZbQ4/dJMcabJxBUW/gzlIlWYOpKXK97tdUd5GUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xZbQ4/dJMcabJxBUW/gzlIlWYOpKXK97tdUd5GUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZbQ4%2FdJMcabJxBUW%2FgzlIlWYOpKXK97tdUd5GUK%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;321&quot; height=&quot;372&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;1071&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;capacity 란 무엇인가 그리고 TrimExcess&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제의 발단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발하던 도중c# List를&amp;nbsp; cpp Vector 리스트 초기화 처럼&amp;nbsp; 괄호 내에 초기화 시켜 사용할 숫자를 넣어 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 문제가 없을거라고 생각했었지만 크기 오류가 생기고 친구가&amp;nbsp; c#은 capacity 값으로 들어간다는 말을 한뒤&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;size18&quot;&gt;&lt;b&gt;그렇다면 우선 capacity란 무엇이였던 걸까요?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;capacity는 &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;그렇다면 왜? 바로 메모리 크기 대로 만들어 두는게 아니라 메모리 크기만 잡아두는것일까요?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;빈공간과 데이터 를 구분할수 없어질수 있습니다.또한 쓸지 안쓸지 모르는 데이터를 미리 만든다면 너무 소비가 커질듯합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 유연성 역시 중요한듯합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모리공간이 특정이상 커진다면&lt;/b&gt; &lt;b&gt;더큰 위치를 찾아서 넣어야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;크기만큼의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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;&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;span&gt;&lt;br /&gt;연속되어있는 배열 과같은 데이터를 가짐으로써&lt;br /&gt;연결리스트 보단 빠른 속도를 가질수 있습니다.&lt;/span&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;그렇다면 capacity 의 동작을 보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1766078228574&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;		 List&amp;lt;int&amp;gt; list = new List&amp;lt;int&amp;gt;();
         //처음 생성한뒤 확인
        Console.WriteLine($&quot;The count is: {list.Count}&quot;);
        Console.WriteLine($&quot;The capacity is: {list.Capacity}&quot;);
        list.Add(1);
        //1개 생성뒤 확인
        Console.WriteLine($&quot;The count is: {list.Count}&quot;);
        Console.WriteLine($&quot;The capacity is: {list.Capacity}&quot;);
        list.Add(2);
        list.Add(3);
        list.Add(4);
        Console.WriteLine($&quot;The count is: {list.Count}&quot;);
        Console.WriteLine($&quot;The capacity is: {list.Capacity}&quot;);
        //capacity 를 넘어섰을때 
        list.Add(5);
        Console.WriteLine($&quot;The count is: {list.Count}&quot;);
        Console.WriteLine($&quot;The capacity is: {list.Capacity}&quot;);&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;1부터 4까지 add로 생성뒤 count와 capcity를 확인해보면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GxN59/dJMcacn8RYR/XXfLexFWrOo6vRLJYb9AX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GxN59/dJMcacn8RYR/XXfLexFWrOo6vRLJYb9AX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GxN59/dJMcacn8RYR/XXfLexFWrOo6vRLJYb9AX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGxN59%2FdJMcacn8RYR%2FXXfLexFWrOo6vRLJYb9AX1%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;290&quot; height=&quot;128&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개 들어갔을때 capacity 4 로 늘어난뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;capacity를 초과했을때 8로 늘어난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 처럼 확인했을경우&lt;/p&gt;
&lt;pre id=&quot;code_1766078274282&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        List&amp;lt;int&amp;gt; lista = new List&amp;lt;int&amp;gt;(4);
        for (int i = 0; i &amp;lt; 30; i++)
        {
            list.Add(3);

            Console.WriteLine($&quot;The capcitycount  is: {list.Count}&quot;);
            Console.WriteLine($&quot;The capcitycapacity is: {list.Capacity}&quot;);
        }&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;4 8 16 32 64 순으로 capacity는 배수로 늘어나는걸 확인할수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 메모리 크기가 배수로 늘어날까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 최대한 메모리 복사가 일어날 일을 최대한 적게 하기 위함 입니다. 다른 언어나 cpp 특정 컴파일러에선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.5배를 쓰기도 한다고 합니다.&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;size18&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;cpp 의경우는 vector 에서는 비슷한 경우 move를 사용합니다. 물론 복사도 때에따라 할수있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c#의 경우 GC 가비지 에서 자동으로 처리해 주는식으로 처리합니다.&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;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;그렇다면 내가 1025개의 데이터가 필요하면 2048의 데이터 공간을 가져서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;그래서 사용하지 않는 메모리 를 다시 돌려주는 함수가 있습니다.&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;TrimExcess() 함수는 capacity를 count에 맞게 줄여주는 역할을 하고있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;동작 방식&lt;/b&gt; : Count 만큼의 새 매모리를 할당하고 데이터를 모두 복사한뒤 기존의 큰 메모리를 해제&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;그래서 처음 생성자에서 사용할 최대 용량을 사용하면 좋습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>list</category>
      <category>List 최적화</category>
      <category>리스트 최적화</category>
      <category>최적화</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/68</guid>
      <comments>https://programing-note.tistory.com/entry/C-ListT%EC%9D%98-%EC%B5%9C%EC%A0%81%ED%99%94#entry68comment</comments>
      <pubDate>Sat, 20 Dec 2025 22:49:39 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 엔진으로 배우는 게임 디자인 패턴</title>
      <link>https://programing-note.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%97%94%EC%A7%84%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%8C%EC%9E%84-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 책을 한 권 읽었습니다!.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 엔진으로 배우는 게임 디자인 패턴&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 디자인 패턴을 &lt;b&gt;언리얼 엔진 5&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;시작은 언리얼 5의 블루프린트, cpp, 상속이나 변환에 관한 내용과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SOLID 원칙 같은 기본적인 부분을 먼저 잡고 넘어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초보라면 무조건 거쳐가는 캐스케이팅 캐스트 체인 문제도 이야기해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 기본적인 부분을 잡아주는 부분이 있어서 좋았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4장 전까지는 개발 공부를 해보았다면 접할수 있는 내용들을 언리얼에 맞추어 설명해주었다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 부터는 언리얼5 내장되어 있는 컴포넌트,업데이트 메서드, 비헤이비어 트리 를 설명합니다.&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;내용중 4.2 부분에서 컴포넌트 이해 및 생성 부분도 좋았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ECS 에 관련된 내용이 잠깐 나옵니다. ECS 이기 때문에 프로그래밍의 원칙적 접근 방식을 정해주는 부분이 정말 좋은 부분인듯 합니다. 이는 쉽게 알기어렵고 알고나더라도 적용 하기 어려울수 있지만 책에선 명쾌하게 설명해주어 좋습니다.&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;5장부터는 틱 에 대한 이야기와 델리게이트로 시작해서 설계 방식을 자연스럽게 단계적으로 설명해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;싱글턴, 커멘드, 행동 패턴을 이용한 구조화와 패턴을 통한 최적화 들을 설명해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최적화부분에 오브젝트 풀링 , 더티 플래그도 언리얼에서 사용한&amp;nbsp; 부분을 예시로 들어주어 정말 재미있었습니다.&lt;/p&gt;
&lt;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;span style=&quot;letter-spacing: 0px;&quot;&gt;일정 이상의 언리얼, cpp를&amp;nbsp; 알고있어야 이해하기 쉬울수 있습니다.&lt;/span&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼로 개발을 하는중 코드의 구조에 대해 고심하는분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패턴 책을 읽어 봤지만 일부 패턴을 언리얼에서 사용하는 법을 알고싶은분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 분들이 읽기에 좋은 책인듯 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;공부하시는 분들이 함수나 기능이 어떤 패턴으로 만들어졌는지 안다면 이후 개발할때 훨씬 도움 된다고 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 책을 읽은뒤 언리얼의 이해도가 높아진듯 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;특히 패턴들이 언리얼에서 어떤 방식으로 사용되었는지 알수 있어서 좋았습니다.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWkHfM/dJMcad1yFZ8/shCxht3QAFXHxvnlBpV1pK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWkHfM/dJMcad1yFZ8/shCxht3QAFXHxvnlBpV1pK/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20251211_165306144_02.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWkHfM/dJMcad1yFZ8/shCxht3QAFXHxvnlBpV1pK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWkHfM%2FdJMcad1yFZ8%2FshCxht3QAFXHxvnlBpV1pK%2Fimg.jpg&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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PoeTi/dJMcadN1nLq/dfKwqVrYk7N6PqibfbnkXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PoeTi/dJMcadN1nLq/dfKwqVrYk7N6PqibfbnkXK/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20251211_165306144_01.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PoeTi/dJMcadN1nLq/dfKwqVrYk7N6PqibfbnkXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPoeTi%2FdJMcadN1nLq%2FdfKwqVrYk7N6PqibfbnkXK%2Fimg.jpg&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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1E2VE/dJMcad1yFZ7/FsI293ftfsrETbiu577WF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1E2VE/dJMcad1yFZ7/FsI293ftfsrETbiu577WF0/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20251211_165306144.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1E2VE/dJMcad1yFZ7/FsI293ftfsrETbiu577WF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1E2VE%2FdJMcad1yFZ7%2FFsI293ftfsrETbiu577WF0%2Fimg.jpg&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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>언어/C++</category>
      <category>언리얼엔진으로배우는게임디자인패턴</category>
      <category>제이펍</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/67</guid>
      <comments>https://programing-note.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%97%94%EC%A7%84%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%8C%EC%9E%84-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4#entry67comment</comments>
      <pubDate>Thu, 11 Dec 2025 20:52:08 +0900</pubDate>
    </item>
    <item>
      <title>백준 달려라 홍준 [백준:1306] 플래5</title>
      <link>https://programing-note.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EB%8B%AC%EB%A0%A4%EB%9D%BC-%ED%99%8D%EC%A4%80-%EB%B0%B1%EC%A4%801306-%ED%94%8C%EB%9E%985</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;1037&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kDemt/dJMcagw9bgl/NkqTQqAR38SFitdiqYJ1Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kDemt/dJMcagw9bgl/NkqTQqAR38SFitdiqYJ1Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kDemt/dJMcagw9bgl/NkqTQqAR38SFitdiqYJ1Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkDemt%2FdJMcagw9bgl%2FNkqTQqAR38SFitdiqYJ1Q0%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;544&quot; height=&quot;427&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;1037&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;1161&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ929X/dJMcai9wgaH/FNt6tqVl78QRaJ6p6i6GPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ929X/dJMcai9wgaH/FNt6tqVl78QRaJ6p6i6GPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ929X/dJMcai9wgaH/FNt6tqVl78QRaJ6p6i6GPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ929X%2FdJMcai9wgaH%2FFNt6tqVl78QRaJ6p6i6GPK%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;1161&quot; height=&quot;680&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;680&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;달려라 홍준아!!!&lt;br /&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1306&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1306&lt;/a&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;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투포인터,슬라이딩 윈도우 방식으로 풀수있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽&amp;nbsp; i-M&amp;nbsp; &amp;nbsp;부터 오른쪽 i+M 을 탐색하며&amp;nbsp; 큰수가 들어오면&amp;nbsp;&amp;nbsp;&lt;br /&gt;그수의 크기와 위치 를 기억해두고&lt;br /&gt;&lt;br /&gt;위치가 i-M 시야에서 나가면&amp;nbsp; 윈도우(i-M 부터 i+M 까지) 를 재탐색후 크기가 큰것을 찾아준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 다음 위치로 이동시 크기가 큰게 들어오면 다시 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 가장큰 light를 answer로 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763735278434&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

void RuningHong() {
	int N, M, d, after, befor, StrongLight = 0, StrongNumber = 0;
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
	vector&amp;lt;int&amp;gt; way(N);
	vector&amp;lt;int&amp;gt; answer;
	M--;
	for (int i = 0; i &amp;lt; N; ++i)
	{
		cin &amp;gt;&amp;gt; d;
		way[i] = d;
		if (i &amp;lt;= M + M &amp;amp;&amp;amp; StrongLight &amp;lt;= d) {
			StrongLight = d;
			StrongNumber = i;
		}
	}
	for (int i = M; i &amp;lt; N - M; ++i) {
		// 시야에서 사라졌다면  다음으로 강한친구  시야에서 찾기 
		if (StrongNumber &amp;lt; i - M) {
			StrongLight = 0;
			StrongNumber = 0;
			for (int j = i-M; j &amp;lt; i + M; ++j) {
				if (StrongLight &amp;lt;= way[j]) {
					StrongLight = way[j];
					StrongNumber = j;
				}
			}
		}
		//|| 다음으로 들어온게 현재꺼 보다 크다면 바꿔주기
		if (StrongLight &amp;lt;= way[i + M]) {
			StrongLight = way[i + M];
			StrongNumber = i;
		}
		answer.push_back(StrongLight);

	}

	for (auto data : answer) {
		cout &amp;lt;&amp;lt; data &amp;lt;&amp;lt; &quot; &quot;;
	}

}

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	RuningHong();
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>달려라 홍준</category>
      <category>백준</category>
      <category>백준 1306</category>
      <category>플래</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/66</guid>
      <comments>https://programing-note.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EB%8B%AC%EB%A0%A4%EB%9D%BC-%ED%99%8D%EC%A4%80-%EB%B0%B1%EC%A4%801306-%ED%94%8C%EB%9E%985#entry66comment</comments>
      <pubDate>Fri, 21 Nov 2025 23:32:09 +0900</pubDate>
    </item>
    <item>
      <title>K번째 최단경로 찾기 [백준:1854] 플래4</title>
      <link>https://programing-note.tistory.com/entry/K%EB%B2%88%EC%A7%B8-%EC%B5%9C%EB%8B%A8%EA%B2%BD%EB%A1%9C-%EC%B0%BE%EA%B8%B0-%EB%B0%B1%EC%A4%801854-%ED%94%8C%EB%9E%984</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1167&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbbBKz/btsQBskov5Z/glMjtZueBscSwwfik6pZlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbbBKz/btsQBskov5Z/glMjtZueBscSwwfik6pZlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbbBKz/btsQBskov5Z/glMjtZueBscSwwfik6pZlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbbBKz%2FbtsQBskov5Z%2FglMjtZueBscSwwfik6pZlk%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;1167&quot; height=&quot;687&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;687&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;K번째 최단경로를 찾는 문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용했던 경로를 제거했던 거의 최단경로 와 비슷하다고 생각했지만.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제는 사용했던 경로 까지 생각해서 K째 경로를 찾는 문제다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 풀이방법은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BFS 로&amp;nbsp; 우선순위는 거리가 적게 이동한 순서로&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;만약 아직 이동 cost가 K 번째가 아니라면 BFS로 이동을 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최우선 거리를 먼저 실행하기에 도착했을때 몇번째로 도착했는지만 알수있다면 끝난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 모든노드를 K번째 방문했을때 BFS를 끝내주면 된다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758004042467&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;vector&amp;gt;
#include&amp;lt;unordered_map&amp;gt;
#include&amp;lt;queue&amp;gt;
using namespace std;

void K_MST() {
	unordered_map&amp;lt;int, unordered_map&amp;lt;int, int&amp;gt;&amp;gt; KMap;
	unordered_map&amp;lt;int, unordered_map&amp;lt;int, int&amp;gt;&amp;gt; K_reverse_Map;
	// 0 = 최단거리 , 1= 그전 노드 , 2 = k번째 횟수
	unordered_map&amp;lt;int, tuple&amp;lt;int, int, int&amp;gt;&amp;gt; Visit_trunk_Map;
	int N, M, K, a, b, c;
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M &amp;gt;&amp;gt; K;

	for (int i = 0; i &amp;lt; M; ++i) {
		cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; c;
		KMap[a][b] = c;
		K_reverse_Map[b][a] = c;
	}
	for (int i = 0; i &amp;lt; N; ++i) {
		Visit_trunk_Map[i + 1] = { 2147483646 ,-1,K };
		//   3번째는 이전노드  마지막은 k를구할 이동횟수
	}
	
	
	priority_queue&amp;lt;tuple&amp;lt;int, int, int&amp;gt;&amp;gt; PQ;
	PQ.push({ 0, 1,0 });


	//K번째 도착해야하는 노드의 갯수
	int NNum = N;
	
	while (NNum != 0 &amp;amp;&amp;amp; !PQ.empty())
	{
		//first = 거리cost , second = 현재 노드 thread = 전노드
		auto data = PQ.top();
		PQ.pop();
		// k가 작으면 k-1

		//현재 노드에 도착했다는 것이기에  현재 노드가 몇번째 도착인지 카운트
		if (get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)]) &amp;gt; 0) {

			// 현재 몇번째 도착했는지 저장
			Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)] = { -get&amp;lt;0&amp;gt;(data),get&amp;lt;1&amp;gt;(data),get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)]) - 1 };
			
			// 만약 이번이 마지막 도착이였을경우 현재노드는 K번째로 도착했기에 끝
			if (0 == get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)])) {
				NNum--;
			}
		}
		else {
			continue;
		}
		//현재 노드에서 갈수있는 노드 재탐색
		for (auto Ks : KMap[get&amp;lt;1&amp;gt;(data)]) {
			// 거리 이동, 다음실행시 현재노드 , 다음실행시 전노드
			PQ.push({ -(-get&amp;lt;0&amp;gt;(data) + Ks.second),Ks.first,get&amp;lt;1&amp;gt;(data) });
		}
	}

	//노드들을 실행하며 최단거리 확인
	for (int i = 1; i &amp;lt;= N; ++i) {
		int  answer = 2147483646;
		answer = get&amp;lt;0&amp;gt;(Visit_trunk_Map[i]);
		if (answer == 2147483646 || get&amp;lt;2&amp;gt;(Visit_trunk_Map[i]) != 0)answer = -1;
		cout &amp;lt;&amp;lt; answer &amp;lt;&amp;lt; &quot;\n&quot;;

	}

}
int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	K_MST();

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위처럼 만들었지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블로그를 쓰면서 메모리를 조금더 아낄수 있는 방법이 있었다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말간단하게 방문할 코드중 이미 끝난 코드는 방문하지 않는방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758004306738&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;		for (auto Ks : KMap[get&amp;lt;1&amp;gt;(data)]) {
			
			//다음노드가 끝났으면 갈 필요 없음
			if (0 != get&amp;lt;2&amp;gt;(Visit_trunk_Map[Ks.first])) {
				// 거리 이동, 다음실행시 현재노드 , 다음실행시 전노드
				PQ.push({ -(-get&amp;lt;0&amp;gt;(data) + Ks.second),Ks.first,get&amp;lt;1&amp;gt;(data) });
			}
		}&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpZ9Nd/btsQBjnQkdN/IJpxeLt7gDNl2iw0A8PYz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpZ9Nd/btsQBjnQkdN/IJpxeLt7gDNl2iw0A8PYz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpZ9Nd/btsQBjnQkdN/IJpxeLt7gDNl2iw0A8PYz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpZ9Nd%2FbtsQBjnQkdN%2FIJpxeLt7gDNl2iw0A8PYz0%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;572&quot; height=&quot;34&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;34&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;557&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egZKGO/btsQAZpSnOD/ot6jhFdBXULksrZIud64G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egZKGO/btsQAZpSnOD/ot6jhFdBXULksrZIud64G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egZKGO/btsQAZpSnOD/ot6jhFdBXULksrZIud64G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegZKGO%2FbtsQAZpSnOD%2Fot6jhFdBXULksrZIud64G0%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;557&quot; height=&quot;30&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처럼 줄어든다&lt;/p&gt;
&lt;pre id=&quot;code_1758004278914&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;vector&amp;gt;
#include&amp;lt;unordered_map&amp;gt;
#include&amp;lt;queue&amp;gt;
using namespace std;

void K_MST() {
	unordered_map&amp;lt;int, unordered_map&amp;lt;int, int&amp;gt;&amp;gt; KMap;
	unordered_map&amp;lt;int, unordered_map&amp;lt;int, int&amp;gt;&amp;gt; K_reverse_Map;
	// 0 = 최단거리 , 1= 그전 노드 , 2 = k번째 횟수
	unordered_map&amp;lt;int, tuple&amp;lt;int, int, int&amp;gt;&amp;gt; Visit_trunk_Map;
	int N, M, K, a, b, c;
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M &amp;gt;&amp;gt; K;

	for (int i = 0; i &amp;lt; M; ++i) {
		cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; c;
		KMap[a][b] = c;
		K_reverse_Map[b][a] = c;
	}
	for (int i = 0; i &amp;lt; N; ++i) {
		Visit_trunk_Map[i + 1] = { 2147483646 ,-1,K };
		//   3번째는 이전노드  마지막은 k를구할 이동횟수
	}
	
	
	priority_queue&amp;lt;tuple&amp;lt;int, int, int&amp;gt;&amp;gt; PQ;
	PQ.push({ 0, 1,0 });


	//K번째 도착해야하는 노드의 갯수
	int NNum = N;
	
	while (NNum != 0 &amp;amp;&amp;amp; !PQ.empty())
	{
		//first = 거리cost , second = 현재 노드 thread = 전노드
		auto data = PQ.top();
		PQ.pop();
		// k가 작으면 k-1

		//현재 노드에 도착했다는 것이기에  현재 노드가 몇번째 도착인지 카운트
		if (get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)]) &amp;gt; 0) {

			// 현재 몇번째 도착했는지 저장
			Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)] = { -get&amp;lt;0&amp;gt;(data),get&amp;lt;1&amp;gt;(data),get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)]) - 1 };
			
			// 만약 이번이 마지막 도착이였을경우 현재노드는 K번째로 도착했기에 끝
			if (0 == get&amp;lt;2&amp;gt;(Visit_trunk_Map[get&amp;lt;1&amp;gt;(data)])) {
				NNum--;
			}
		}
		else {
			continue;
		}
		//현재 노드에서 갈수있는 노드 재탐색
		for (auto Ks : KMap[get&amp;lt;1&amp;gt;(data)]) {
			
			//다음노드가 끝났으면 갈 필요 없음
			if (0 != get&amp;lt;2&amp;gt;(Visit_trunk_Map[Ks.first])) {
				// 거리 이동, 다음실행시 현재노드 , 다음실행시 전노드
				PQ.push({ -(-get&amp;lt;0&amp;gt;(data) + Ks.second),Ks.first,get&amp;lt;1&amp;gt;(data) });
			}
		}
	}

	//노드들을 실행하며 최단거리 확인
	for (int i = 1; i &amp;lt;= N; ++i) {
		int  answer = 2147483646;
		answer = get&amp;lt;0&amp;gt;(Visit_trunk_Map[i]);
		if (answer == 2147483646 || get&amp;lt;2&amp;gt;(Visit_trunk_Map[i]) != 0)answer = -1;
		cout &amp;lt;&amp;lt; answer &amp;lt;&amp;lt; &quot;\n&quot;;

	}

}
int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	K_MST();

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/65</guid>
      <comments>https://programing-note.tistory.com/entry/K%EB%B2%88%EC%A7%B8-%EC%B5%9C%EB%8B%A8%EA%B2%BD%EB%A1%9C-%EC%B0%BE%EA%B8%B0-%EB%B0%B1%EC%A4%801854-%ED%94%8C%EB%9E%984#entry65comment</comments>
      <pubDate>Tue, 16 Sep 2025 15:32:54 +0900</pubDate>
    </item>
    <item>
      <title>데바데 블러드웹 만들어보기</title>
      <link>https://programing-note.tistory.com/entry/%EB%8D%B0%EB%B0%94%EB%8D%B0-%EC%9E%90%EB%8F%99-%EA%B5%AC%EB%A7%A4%EB%8A%94-%EA%B0%80%EC%9E%A5-%EC%A0%80%EB%A0%B4%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%BC%EA%B9%8C%EC%9E%84%EC%8B%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBSR4m/btsQukfjLyS/pzGvuSWq9UuFnCsbl1sClK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBSR4m/btsQukfjLyS/pzGvuSWq9UuFnCsbl1sClK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBSR4m/btsQukfjLyS/pzGvuSWq9UuFnCsbl1sClK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBSR4m%2FbtsQukfjLyS%2FpzGvuSWq9UuFnCsbl1sClK%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;646&quot; height=&quot;703&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데바데 자동 구매는 어떤 방법일까? 해서 심심해서 비슷하게 구현해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데드바이 데이라이트를 플레이하던 중&amp;nbsp; 게임에는 아래와 같이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 구매하는 시스템이 존재한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;1233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9SGQ8/btsKzezt3Io/Xe9O0U99fDARQ5apHTqLH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9SGQ8/btsKzezt3Io/Xe9O0U99fDARQ5apHTqLH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9SGQ8/btsKzezt3Io/Xe9O0U99fDARQ5apHTqLH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9SGQ8%2FbtsKzezt3Io%2FXe9O0U99fDARQ5apHTqLH0%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;1460&quot; height=&quot;1233&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;1233&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;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;&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;&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;&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;833&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7C9xA/btsKAfYikB6/i93UgN7k1GjPf1l71w1UWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7C9xA/btsKAfYikB6/i93UgN7k1GjPf1l71w1UWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7C9xA/btsKAfYikB6/i93UgN7k1GjPf1l71w1UWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7C9xA%2FbtsKAfYikB6%2Fi93UgN7k1GjPf1l71w1UWK%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;833&quot; height=&quot;299&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;299&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;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;가깝고 싼 순서부터 우선순위&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;무서운 진실(최대한 싸게 구매하지 않는다는) 사실을&amp;nbsp; 알아버렸지만 좌절하고 있을 수는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계속 분석해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배치는 어떤 식일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 배치는 어떤 식으로 만들어지는지 자세히 보기 위해&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;1201&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPjJMw/btsLLBzGqlD/K8zlRJK7UIZAY2W5fD4DOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPjJMw/btsLLBzGqlD/K8zlRJK7UIZAY2W5fD4DOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPjJMw/btsLLBzGqlD/K8zlRJK7UIZAY2W5fD4DOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPjJMw%2FbtsLLBzGqlD%2FK8zlRJK7UIZAY2W5fD4DOK%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;1201&quot; height=&quot;1076&quot; data-origin-width=&quot;1201&quot; data-origin-height=&quot;1076&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;806&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A7Xx2/btsLJEklt7C/Oxq8wfqwA4b2l2HE1I6bnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A7Xx2/btsLJEklt7C/Oxq8wfqwA4b2l2HE1I6bnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A7Xx2/btsLJEklt7C/Oxq8wfqwA4b2l2HE1I6bnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA7Xx2%2FbtsLJEklt7C%2FOxq8wfqwA4b2l2HE1I6bnK%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;806&quot; height=&quot;644&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;1138&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bofsPF/btsLKa4bGUf/ihmzFzDeHZZmQDoRHQF7Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bofsPF/btsLKa4bGUf/ihmzFzDeHZZmQDoRHQF7Nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bofsPF/btsLKa4bGUf/ihmzFzDeHZZmQDoRHQF7Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbofsPF%2FbtsLKa4bGUf%2FihmzFzDeHZZmQDoRHQF7Nk%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;1138&quot; height=&quot;1033&quot; data-origin-width=&quot;1138&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RootNode&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth 1&amp;nbsp; 노드수 6개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth 2&amp;nbsp; 노드수 12개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth 3&amp;nbsp; 노드수 12개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깊이에 비례해서 노드수가 커지지는 않는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간선은&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RootNode&amp;nbsp; = Depth 1 간선 6개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Depth 1&amp;nbsp;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= Root Node + 같은 Depth 간선 최대 2개&amp;nbsp; + Depth +1 간선 2개&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth 2&amp;nbsp; &amp;nbsp; &amp;nbsp; = Depth 1 간선 최대 2개 + 같은 Depth 간선 최대 2개&amp;nbsp; + Depth +1 간선 2개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth 3&amp;nbsp; &amp;nbsp; &amp;nbsp; = Depth 2 간선 최대 2개 + 같은 Depth 간선 최대 2개&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정도로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;해당 시스템을 그대로 만든다면&amp;nbsp;&lt;br /&gt;미리 노드들과 위치 연결된 간선을 만들어둔 뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;root 노드에서 BFS 나 DFS로 만 들것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 아이템 등장 확률이나 간선 노드 생성 수식을 모르니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임시로 만들어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;3개의 깊이로 2번 3번에서는 왼쪽과 아래 간선을 랜덤 하게 연결하는 식으로 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깊이당 노드도 랜덤이기에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;큰 기획 없이 랜덤 하게 스폰하게 만든 간단한 그래프기에&amp;nbsp; &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; 적다면&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 잘 나온 그래프.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WnE5N/btsLWtvljCn/k8GEtK4CUsj7OzUEkoots0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WnE5N/btsLWtvljCn/k8GEtK4CUsj7OzUEkoots0/img.png&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;590&quot; data-is-animation=&quot;false&quot; width=&quot;600&quot; height=&quot;473&quot; style=&quot;width: 52.1911%; margin-right: 10px;&quot; data-widthpercent=&quot;52.81&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WnE5N/btsLWtvljCn/k8GEtK4CUsj7OzUEkoots0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWnE5N%2FbtsLWtvljCn%2Fk8GEtK4CUsj7OzUEkoots0%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;749&quot; height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOiZoQ/btsLV61xPVL/Me7j5IkiTcmA4GYHBCCRp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOiZoQ/btsLV61xPVL/Me7j5IkiTcmA4GYHBCCRp1/img.png&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;624&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.6461%;&quot; data-widthpercent=&quot;47.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOiZoQ/btsLV61xPVL/Me7j5IkiTcmA4GYHBCCRp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOiZoQ%2FbtsLV61xPVL%2FMe7j5IkiTcmA4GYHBCCRp1%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;708&quot; height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/div&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;p data-ke-size=&quot;size16&quot;&gt;간선이 겹치는 경우&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MAgnf/btsLWsDeViB/UKPOa5uqTPzdJaqkdggRA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MAgnf/btsLWsDeViB/UKPOa5uqTPzdJaqkdggRA1/img.png&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;545&quot; data-is-animation=&quot;false&quot; width=&quot;347&quot; height=&quot;268&quot; style=&quot;width: 51.9914%; margin-right: 10px;&quot; data-widthpercent=&quot;52.6&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MAgnf/btsLWsDeViB/UKPOa5uqTPzdJaqkdggRA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMAgnf%2FbtsLWsDeViB%2FUKPOa5uqTPzdJaqkdggRA1%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;705&quot; height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqm3N9/btsLWwMoFBX/XC4U35dog3KvTfI75xyuT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqm3N9/btsLWwMoFBX/XC4U35dog3KvTfI75xyuT1/img.png&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;598&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.8458%;&quot; data-widthpercent=&quot;47.4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqm3N9/btsLWwMoFBX/XC4U35dog3KvTfI75xyuT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqm3N9%2FbtsLWwMoFBX%2FXC4U35dog3KvTfI75xyuT1%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;697&quot; height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/div&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;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;&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;&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://youtu.be/SVtNEP8hgnE&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/SVtNEP8hgnE&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=SVtNEP8hgnE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bVvsZ1/hyZIVj4ROD/hVRKyv3OayWbQmYH5U7aaK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/b40Pog/hyZIRvcaEm/VmZRHaQUDeToJyGZErXKw1/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;dbd_가까운_우선순위&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/SVtNEP8hgnE&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/WlBpLT75-48&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/WlBpLT75-48&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=WlBpLT75-48&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bfdZnL/hyZIRoq0n9/GLLkXCppkwluKj2wwrbCR1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/bZwfHU/hyZIV5tgKY/qt1gVF2ym4BOba4LKifw61/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;dbd_작은것_우선순위&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/WlBpLT75-48&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/50XT6vks62Q&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/50XT6vks62Q&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=50XT6vks62Q&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dceOe3/hyZIPEbVIl/fSJ3ljp9w4gyAYWASZtPK0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cHkfge/hyZIWQPhR4/ffeP4UI62EyGH7P1a4whF0/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;dbd_다익스트라&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/50XT6vks62Q&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&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;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1757487503903&quot; class=&quot;reasonml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;csharp&quot;&gt;&lt;code&gt;using NUnit.Framework;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using System;
using Unity.VisualScripting;
using UnityEngine.UI;
using System.Net;
using System.Collections;

public class BloodwebSystem : MonoBehaviour
{

    private PriorityQueue&amp;lt;(int, ItemScriptableObject), (int, int)&amp;gt; queue;
    private ItemScriptableObject RootItems;
    private Dictionary&amp;lt;int, List&amp;lt;LineRenderer&amp;gt;&amp;gt; lineRenderers = new Dictionary&amp;lt;int, List&amp;lt;LineRenderer&amp;gt;&amp;gt;();
    private Dictionary&amp;lt;(int, int), LineRenderer&amp;gt; EdgeDicrionaty = new Dictionary&amp;lt;(int, int), LineRenderer&amp;gt;();

    private Queue&amp;lt;int&amp;gt; Deadny_Auto = new Queue&amp;lt;int&amp;gt;();
    private List&amp;lt;bool&amp;gt; Deadny_ison;
    //아이템리스트
    public List&amp;lt;ItemScriptableObject&amp;gt; PabItems;
    private List&amp;lt;ItemScriptableObject&amp;gt; ItemList = new List&amp;lt;ItemScriptableObject&amp;gt;();
    // ui 생성위치
    public GameObject MakeBloodwebPoint;
    public GameObject MakeBloodwebLinePoint;
    //깊이당 생성 저장
    public List&amp;lt;List&amp;lt;ItemScriptableObject&amp;gt;&amp;gt; BloodwebDepth;

    public GameObject BloodObjectPrefab;


    public GameObject BloodObjectLinePrefab;


    [SerializeField, UnityEngine.Range(1, 30)]
    public int MaxPoint = 25;
    public int MaxPath = 25;


    [SerializeField, UnityEngine.Range(1, 100)]
    public int CircleRadius = 25;


    private List&amp;lt;(int, int)&amp;gt; DijkstraInts = new List&amp;lt;(int, int)&amp;gt;(), DBDSerchInts = new List&amp;lt;(int, int)&amp;gt;(), SmallSerchInts = new List&amp;lt;(int, int)&amp;gt;();

    // 데이터 시트 구현
    void Start()
    {

        Init();
        //queue = new PriorityQueue&amp;lt;ItemScriptableObject, (int, int)&amp;gt;();
        //queue.Enqueue(new ItemScriptableObject { price = 3 }, (0, 1000));
        //queue.Enqueue(new ItemScriptableObject { price = 1 }, (-1, 2000));
        //queue.Enqueue(new ItemScriptableObject { price = 2 }, (-1, 3000));
        //queue.Enqueue(new ItemScriptableObject { price = 4 }, (1, -2000));
        //queue.Enqueue(new ItemScriptableObject { price = 5 }, (2, 0));

        //while (queue.Count &amp;gt; 0)
        //{
        //    Debug.Log(queue.Dequeue().price);
        //}

    }
    //가격순 정렬
    int compareItem(ItemScriptableObject a, ItemScriptableObject b)
    {
        return a.price &amp;lt; b.price ? -1 : 1;
    }

    private void Init()
    {
        //3개의 뎁스
        queue = new PriorityQueue&amp;lt;(int, ItemScriptableObject), (int, int)&amp;gt;();
        BloodwebDepth = new List&amp;lt;List&amp;lt;ItemScriptableObject&amp;gt;&amp;gt;(3);
        RootItems = new ItemScriptableObject { price = -1, edge = new List&amp;lt;ItemScriptableObject&amp;gt;() };
        //PabItems 갑어치에 따른 정렬
        PabItems.Sort(compareItem);


        int min = 8;
        int max = 12;

        int number = 0;

        for (int i = 0; i &amp;lt; 3; ++i)
        {
            BloodwebDepth.Add(new List&amp;lt;ItemScriptableObject&amp;gt;());

            float randomValue = UnityEngine.Random.Range(0f, 1f);
            float bias = 2f + i;
            int selectedValue = Mathf.FloorToInt(min + Mathf.Pow(randomValue, bias) * (max - min + 1));

            if (i == 0)
            {
                selectedValue = 6;
            }
            for (int j = 0; j &amp;lt; selectedValue; ++j)
            {

                int R_Number = UnityEngine.Random.Range(0, PabItems.Count);
                //가치에 따른 낮은 확율 생성 필요
                ItemScriptableObject tempI = new ItemScriptableObject
                {
                    numbering = number,
                    price = PabItems[R_Number].price,
                    Sprite = PabItems[R_Number].Sprite,
                    depth = i,
                    edge = new List&amp;lt;ItemScriptableObject&amp;gt;()
                };
                lineRenderers.Add(number, new List&amp;lt;LineRenderer&amp;gt;());

                number++;
                BloodwebDepth[i].Add(tempI);
                ItemList.Add(tempI);



            }
        }

        (int, int)[] edges = { (-1, 0), (0, -1) };
        DrawBloodWeb();

        for (int i = 0; i &amp;lt; BloodwebDepth.Count; ++i)
        {
            for (int j = 0; j &amp;lt; BloodwebDepth[i].Count; ++j)
            {
                if (i == 0)
                {
                    RootItems.edge.Add(BloodwebDepth[i][j]);


                    var d = DrawLine(MakeBloodwebLinePoint.transform.position, BloodwebDepth[i][j].g.transform.position);
                    EdgeDicrionaty.Add((-1, j), d);

                    //옆라인 연결 있든없든 상관없음 
                }
                else
                {
                    int numToSelect = UnityEngine.Random.Range(1, edges.Length + 1);
                    bool[] selectedFlags = new bool[edges.Length];

                    while (BloodwebDepth[i][j].edge.Count &amp;lt; numToSelect)
                    {
                        int randomIndex = UnityEngine.Random.Range(0, edges.Length);

                        // 이미 선택된 항목인지 확인
                        if (!selectedFlags[randomIndex])
                        {
                            int TDepth = i + (edges[randomIndex].Item1);
                            int whith = j + edges[randomIndex].Item2;


                            if (whith &amp;lt; 0) whith = BloodwebDepth[i].Count - 1;
                            if (BloodwebDepth[TDepth].Count - 1 &amp;lt; whith) whith = (BloodwebDepth[TDepth].Count - 1) % whith;
                            if (BloodwebDepth[TDepth][whith]) selectedFlags[randomIndex] = true;

                            BloodwebDepth[i][j].edge.Add(BloodwebDepth[TDepth][(whith)]);
                            BloodwebDepth[TDepth][whith].edge.Add(BloodwebDepth[i][j]);

                            var d = DrawLine(BloodwebDepth[i][j].g.transform.position, BloodwebDepth[TDepth][whith].g.transform.position);
                            lineRenderers[BloodwebDepth[i][j].numbering].Add(d);
                            lineRenderers[BloodwebDepth[TDepth][whith].numbering].Add(d);
                            EdgeDicrionaty.Add((BloodwebDepth[i][j].numbering, BloodwebDepth[TDepth][whith].numbering), d);
                            EdgeDicrionaty.Add((BloodwebDepth[TDepth][whith].numbering, BloodwebDepth[i][j].numbering), d);
                        }
                    }
                }
            }
        }

        Debug.Log(&quot;end&quot;);
        //미리 계산하기
        Deadny_Auto = Deadny_AutoChoiceAll();
        Deadny_AutoDraw(Deadny_Auto);

        //DBDSerchInts = DbdDirections();
        //DijkstraInts = DijkstraAll();
        SmallSerchInts = SmallerDirections();

        //StartCoroutine(drawingColor(DBDSerchInts));
        //StartCoroutine(drawingColor(DijkstraInts));
        StartCoroutine(drawingColor(SmallSerchInts));

    }


    private LineRenderer DrawLine(Vector3 x, Vector3 y)
    {

        GameObject lineObject = Instantiate(BloodObjectLinePrefab, MakeBloodwebLinePoint.transform);
        LineRenderer lr = lineObject.GetComponent&amp;lt;LineRenderer&amp;gt;();
        lr.SetPosition(0, x);
        lr.SetPosition(1, y);
        lr.sortingOrder = -1;
        return lr;
    }
    private void DrawBloodWeb()
    {
        Vector3 UITransformPosition = MakeBloodwebPoint.transform.position;

        for (int i = 0; i &amp;lt; BloodwebDepth.Count; i++)
        {

            float CircleRate = (CircleRadius * 0.1f) * (i + 1);
            int count = BloodwebDepth[i].Count;
            for (int j = 0; j &amp;lt; BloodwebDepth[i].Count; j++)
            {
                float theta = (2 * MathF.PI / count) * j;
                var data = BloodwebDepth[i][j];
                data.position.x = UITransformPosition.x + CircleRate * MathF.Cos(theta);
                data.position.y = UITransformPosition.y + CircleRate * MathF.Sin(theta);
                Vector3 ObjectTransformPosition = new Vector3(data.position.x, data.position.y, 0);


                GameObject G = Instantiate(BloodObjectPrefab, MakeBloodwebPoint.transform);
                G.transform.position = ObjectTransformPosition;
                G.GetComponent&amp;lt;Image&amp;gt;().sprite = BloodwebDepth[i][j].Sprite;
                BloodwebDepth[i][j].g = G;

            }
        }
    }
    public Queue&amp;lt;int&amp;gt; Deadny_AutoChoiceAll()
    {
        Deadny_ison = new List&amp;lt;bool&amp;gt;(ItemList.Count + 1);
        for (int i = 0; i &amp;lt; ItemList.Count + 1; ++i)
        {
            Deadny_ison.Add(false);
        }
        Queue&amp;lt;int&amp;gt; temp = new Queue&amp;lt;int&amp;gt;();
        queue.Enqueue((0, RootItems), (0, 0));
        while (queue.Count &amp;gt; 0)
        {
            (int, ItemScriptableObject) data = queue.Dequeue();
            int num = data.Item1;
            if (data.Item2.numbering != -1)
            {
                temp.Enqueue(data.Item2.numbering);
                Deadny_ison[data.Item2.numbering] = true;
            }
            foreach (var edge in data.Item2.edge)
            {
                if (Deadny_ison[edge.numbering] == false)
                {
                    queue.Enqueue((num + edge.price, edge), (edge.depth, num + edge.price));
                }
            }
        }
        return temp;
    }
    public void Deadny_AutoDraw(Queue&amp;lt;int&amp;gt; deadny_Auto)
    {
        while (deadny_Auto.Count &amp;gt; 0)
        {
            int num = deadny_Auto.Dequeue();
            ItemList[num].g.GetComponent&amp;lt;Button&amp;gt;().image.color = new Color(144, 55, 55);
            Debug.Log(ItemList[num].g.GetComponent&amp;lt;Image&amp;gt;().sprite);

        }
    }

    public void NodeNtoChangeColor(int BaseNodeNumber, int ChangeNodeNumber, Color EdgeColor, Color ItemColor)
    {
        EdgeDicrionaty[(BaseNodeNumber, ChangeNodeNumber)].startColor = EdgeColor;
        EdgeDicrionaty[(BaseNodeNumber, ChangeNodeNumber)].endColor = EdgeColor;
        ItemList[ChangeNodeNumber].g.GetComponent&amp;lt;Button&amp;gt;().image.color = (ItemColor);
    }


    private IEnumerator drawingColor(List&amp;lt;(int,int)&amp;gt;Ints)
    {
        foreach ((int, int) d in Ints)
        {
            Debug.Log(d);
            NodeNtoChangeColor(d.Item1, d.Item2, Color.green, Color.black);
            yield return new WaitForSeconds(1f);

        }
    }



    //이후 탐색클래스 분리
    public List&amp;lt;(int, int)&amp;gt; DijkstraAll()
    {
        List&amp;lt;(int, int)&amp;gt; list = new List&amp;lt;(int, int)&amp;gt;();
        PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt; dijksqueue = new PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt;();
        dijksqueue.Enqueue((RootItems, -1, 0), (0, 0));
        List&amp;lt;bool&amp;gt; complete = new List&amp;lt;bool&amp;gt;();
        foreach (ItemScriptableObject item in ItemList)
        {
            complete.Add(false);
        }

        while (dijksqueue.Count != 0)
        {

            var data = dijksqueue.Dequeue();
            Debug.Log(data.Item1.numbering);

            if (data.Item1.numbering != -1)
            {
                if (complete[data.Item1.numbering] == true) continue;
                list.Add((data.Item2, data.Item1.numbering));
                complete[data.Item1.numbering] = true;

            }
            foreach (var edge in data.Item1.edge)
            {
                int dijkcost = edge.price + data.Item3;
                if (complete[edge.numbering] == true) continue;

                dijksqueue.Enqueue((edge, data.Item1.numbering, dijkcost), (dijkcost, 0));
            }
        }
        return list;
    }

    public List&amp;lt;(int, int)&amp;gt; SmallerDirections()
    {
        List&amp;lt;(int, int)&amp;gt; list = new List&amp;lt;(int, int)&amp;gt;();
        PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt; dijksqueue = new PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt;();
        dijksqueue.Enqueue((RootItems, -1, 0), (0, 0));
        List&amp;lt;bool&amp;gt; complete = new List&amp;lt;bool&amp;gt;();
        foreach (ItemScriptableObject item in ItemList)
        {
            complete.Add(false);
        }

        while (dijksqueue.Count != 0)
        {

            var data = dijksqueue.Dequeue();
            Debug.Log(data.Item1.numbering);

            if (data.Item1.numbering != -1)
            {
                if (complete[data.Item1.numbering] == true) continue;
                list.Add((data.Item2, data.Item1.numbering));
                complete[data.Item1.numbering] = true;

            }
            foreach (var edge in data.Item1.edge)
            {
                int dijkcost = edge.price + data.Item3;
                if (complete[edge.numbering] == true) continue;

                dijksqueue.Enqueue((edge, data.Item1.numbering, dijkcost), (edge.price, 0));
            }
        }
        return list;
    }
    public List&amp;lt;(int, int)&amp;gt; DbdDirections()
    {
        List&amp;lt;(int, int)&amp;gt; list = new List&amp;lt;(int, int)&amp;gt;();
        PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt; dijksqueue = new PriorityQueue&amp;lt;(ItemScriptableObject, int, int), (int, int)&amp;gt;();
        dijksqueue.Enqueue((RootItems, -1, 0), (0, 0));
        List&amp;lt;bool&amp;gt; complete = new List&amp;lt;bool&amp;gt;();
        foreach (ItemScriptableObject item in ItemList)
        {
            complete.Add(false);
        }

        while (dijksqueue.Count != 0)
        {

            var data = dijksqueue.Dequeue();
            Debug.Log(data.Item1.depth);

            if (data.Item1.numbering != -1)
            {
                if (complete[data.Item1.numbering] == true) continue;
                list.Add((data.Item2, data.Item1.numbering));
                complete[data.Item1.numbering] = true;

            }
            foreach (var edge in data.Item1.edge)
            {
                int dijkcost = edge.price + data.Item3;
                if (complete[edge.numbering] == true) continue;

                dijksqueue.Enqueue((edge, data.Item1.numbering, dijkcost), (edge.depth, edge.price));
            }
        }
        return list;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후&amp;nbsp; 추가 예정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간선 겹침 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 아이템 노드 잠김&amp;nbsp;&lt;br /&gt;잠기는 노드에 따른 최적치 계산&lt;/p&gt;</description>
      <category>엔진/유니티</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/57</guid>
      <comments>https://programing-note.tistory.com/entry/%EB%8D%B0%EB%B0%94%EB%8D%B0-%EC%9E%90%EB%8F%99-%EA%B5%AC%EB%A7%A4%EB%8A%94-%EA%B0%80%EC%9E%A5-%EC%A0%80%EB%A0%B4%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%BC%EA%B9%8C%EC%9E%84%EC%8B%9C#entry57comment</comments>
      <pubDate>Wed, 10 Sep 2025 17:21:05 +0900</pubDate>
    </item>
    <item>
      <title>AI로 격투게임 만들기 1.(AI로 애니메이션 뽑기)</title>
      <link>https://programing-note.tistory.com/entry/AI%EB%A1%9C-%EA%B2%A9%ED%88%AC%EA%B2%8C%EC%9E%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-1AI%EB%A1%9C-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%EB%BD%91%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;20250417&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;AI 쌀먹 하는 여인들&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SKVGl/btsQt4jvWuJ/Yk8BNiBzP5NztaYDl71kx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SKVGl/btsQt4jvWuJ/Yk8BNiBzP5NztaYDl71kx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SKVGl/btsQt4jvWuJ/Yk8BNiBzP5NztaYDl71kx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSKVGl%2FbtsQt4jvWuJ%2FYk8BNiBzP5NztaYDl71kx1%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;1302&quot; height=&quot;705&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;705&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 할것 stablediffusion web ui 세팅&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;파이썬0250417&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터가 제대로 뽑아지는지 테스트 해보자 이펙트역시 뽑아볼것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상이 설명을 잘해준다 영상을 보고 하는게 빠르겠지만 그냥 서술해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 할것 들&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/rZClOQlHqcA&quot;&gt;https://youtu.be/rZClOQlHqcA&lt;/a&gt;&amp;nbsp;&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=rZClOQlHqcA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/boR2RT/hyZI0MvCnR/1ClD5etCnCMdUUAwm2NnGK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/quy7v/hyZIM8wO41/HZ2iHoNG7JqQmJS4Rhkzz1/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;I Made a Game Using AI&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/rZClOQlHqcA&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/Ffl8b_GfJ-M&quot;&gt;https://youtu.be/Ffl8b_GfJ-M&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=Ffl8b_GfJ-M&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dxKDB9/hyZISOq26V/r9ptaGYIbIGCJpY1rgHnF1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/nTPqK/hyZI1xRzcU/aoxJRi3WZMkkXtxNEfMKXk/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;Stable Diffusion Consistent Character Animation Technique - Tutorial&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Ffl8b_GfJ-M&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=V1VWLRZBz5c&quot;&gt;https://www.youtube.com/watch?v=V1VWLRZBz5c&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=V1VWLRZBz5c&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ckSbnR/hyZI8winEh/KpSkoERGfZlyeQ8lClAv51/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/bwTGzP/hyZIQC7qNV/ohO9KiyoRrkYl4sHVqV6a1/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;픽셀 게임 개발을 쉽고 빠르게 Stable diffusion Lora - 2D Pixel Toolkit&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/V1VWLRZBz5c&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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;우선 할것 stablediffusion web ui 세팅&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;파이썬 버전 3.10.11 설치&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;background-color: #f6e199;&quot;&gt;가상환경 시스템 &lt;span style=&quot;color: #006dd7;&quot;&gt;venv&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;venv&lt;/span&gt;란?&amp;nbsp; 파이썬에서 제공하는 라이브러리 가상공간 이라고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;아나콘다 처럼 가상의 공간을 할당하여&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;파이썬 프로젝트 끼리 필요한 라이브러리가 충돌나지않게 관리해주며&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;한번에 관리하기에 설정하기도 편리하다&lt;/span&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;venv 파일내의 라이브러리 위치 설정을 다시설정해줘야&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;u&gt;프로젝트 파일위치 C:\python\2dCreateAnime&lt;/u&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.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가상환경 만들기 python -m venv &lt;span style=&quot;background-color: #f6e199;&quot;&gt;이름(venv)&lt;/span&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;2.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;접속&lt;span style=&quot;background-color: #f6e199;&quot;&gt; (이름)venv&lt;/span&gt;\Scripts\activate&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #697070; text-align: start;&quot;&gt;# 가상 환경을 비활성화하는 코드&lt;/span&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #444444; text-align: start;&quot;&gt; deactivate&lt;/span&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;가상환경 세팅 txt로 뽑는법&lt;/p&gt;
&lt;pre id=&quot;code_1744888196036&quot; class=&quot;pgsql&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드법&lt;/p&gt;
&lt;pre id=&quot;code_1744888230591&quot; class=&quot;cpp&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;pip install -r requirements.txt&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;&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;3.&amp;nbsp;&lt;/b&gt;&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;  &lt;b&gt;Forge GitHub&lt;/b&gt;&lt;br /&gt;  &lt;a href=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge&quot;&gt;https://github.com/lllyasviel/stable-diffusion-webui-forge&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1744887157357&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;GitHub - lllyasviel/stable-diffusion-webui-forge&quot; data-og-description=&quot;Contribute to lllyasviel/stable-diffusion-webui-forge development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge&quot; data-og-url=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b7LRj8/hyYIfiHZbk/BXfybEMjeKyzMPsmnAVxik/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/IDiCB/hyYFz3dLpx/2QzsvyDGnBEmyuuMlrNfKK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b7LRj8/hyYIfiHZbk/BXfybEMjeKyzMPsmnAVxik/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/IDiCB/hyYFz3dLpx/2QzsvyDGnBEmyuuMlrNfKK/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;GitHub - lllyasviel/stable-diffusion-webui-forge&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to lllyasviel/stable-diffusion-webui-forge development by creating an account on GitHub.&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;
&lt;pre id=&quot;code_1744888379420&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/lllyasviel/stable-diffusion-webui-forge
cd stable-diffusion-webui-forge
python launch.py --xformers&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y43tQ/btsNEmGY7Jj/vNVzkgc8tHrTIjoh8KPTPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y43tQ/btsNEmGY7Jj/vNVzkgc8tHrTIjoh8KPTPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y43tQ/btsNEmGY7Jj/vNVzkgc8tHrTIjoh8KPTPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy43tQ%2FbtsNEmGY7Jj%2FvNVzkgc8tHrTIjoh8KPTPK%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;655&quot; height=&quot;539&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;539&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;파일위치로 이동한뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip install -r requirements_versions.txt&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;&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;&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;stable-diffusion의 모델을 설치해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1744889326562&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;Comfy-Org/stable-diffusion-v1-5-archive at main&quot; data-og-description=&quot;&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&quot; data-og-url=&quot;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cyANti/hyYG6NIf7G/8lo6sxIM1pVKeNshQMEKFk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/bKW1vK/hyYFAug4Iy/eqCSSxl9TEHykS18m5P4Mk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/tree/main&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cyANti/hyYG6NIf7G/8lo6sxIM1pVKeNshQMEKFk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/bKW1vK/hyYFAug4Iy/eqCSSxl9TEHykS18m5P4Mk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&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;Comfy-Org/stable-diffusion-v1-5-archive at main&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;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C:\python\2dCreateAnime\stable-diffusion-webui-forge\models\Stable-diffusion\ 위치에 다운로드 후 다시실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작시 아래 화면을 볼수있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vXoKG/btsNprQIFcy/KhqrcWIzGvfVnmEjjQfeCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vXoKG/btsNprQIFcy/KhqrcWIzGvfVnmEjjQfeCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vXoKG/btsNprQIFcy/KhqrcWIzGvfVnmEjjQfeCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvXoKG%2FbtsNprQIFcy%2FKhqrcWIzGvfVnmEjjQfeCK%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;536&quot; height=&quot;567&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;567&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;p data-ke-size=&quot;size16&quot;&gt;local url이 활성화 되어서 http://127.0.0.1:7860 (로컬호스트)&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9pQZY/btsNC9BWdcN/KGBkIyHjZI2zKd9V6qlKa0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9pQZY/btsNC9BWdcN/KGBkIyHjZI2zKd9V6qlKa0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9pQZY/btsNC9BWdcN/KGBkIyHjZI2zKd9V6qlKa0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9pQZY%2FbtsNC9BWdcN%2FKGBkIyHjZI2zKd9V6qlKa0%2Fimg.jpg&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;515&quot; height=&quot;588&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;588&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;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;&amp;nbsp;&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;1404&quot; data-origin-height=&quot;1141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qt57p/btsNpyot7Tp/T2CT3NzkKQzWtrzHheWzv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qt57p/btsNpyot7Tp/T2CT3NzkKQzWtrzHheWzv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qt57p/btsNpyot7Tp/T2CT3NzkKQzWtrzHheWzv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqt57p%2FbtsNpyot7Tp%2FT2CT3NzkKQzWtrzHheWzv1%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;1404&quot; height=&quot;1141&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;1141&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;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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;forge의 문제 때문에 특정 모델 로드 실패로 인해&amp;nbsp; sampling method 의 몇가지가 실행 하지못했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;버전 변경을 하다가 에러가 난뒤 꼬인듯하여 재설치 하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;56&quot; data-end=&quot;72&quot;&gt;가정한 경로 정보&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;73&quot; data-end=&quot;185&quot;&gt;
&lt;li data-start=&quot;73&quot; data-end=&quot;143&quot;&gt;Web UI 폴더 위치: C:\python\2dCreateAnime\stable-diffusion-webui-forge&lt;/li&gt;
&lt;li data-start=&quot;144&quot; data-end=&quot;161&quot;&gt;가상환경 이름: venv&lt;/li&gt;
&lt;li data-start=&quot;162&quot; data-end=&quot;185&quot;&gt;실행할 스크립트: launch.py&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; data-start=&quot;187&quot; data-end=&quot;190&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;192&quot; data-end=&quot;212&quot;&gt;▶ start.bat 내용&lt;/h3&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1745841516195&quot; class=&quot;mel&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;@echo off
cd /d C:\python\2dCreateAnime\stable-diffusion-webui-forge
call venv\Scripts\activate
python launch.py --xformers
pause&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;새로&amp;nbsp;클론&lt;br /&gt;cd&amp;nbsp;C:\python\2dCreateAnime&lt;br /&gt;git&amp;nbsp;clone&amp;nbsp;&lt;a href=&quot;https://github.com/lllyasviel/stable-diffusion-webui-forge.git&quot;&gt;https://github.com/lllyasviel/stable-diffusion-webui-forge.git&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# venv 새로 생성&lt;br /&gt;python&amp;nbsp;-m&amp;nbsp;venv&amp;nbsp;venv&lt;br /&gt;venv\Scripts\activate&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#venv 관련 항목 설치&lt;br /&gt;cd&amp;nbsp;stable-diffusion-webui-forge&lt;br /&gt;pip&amp;nbsp;install&amp;nbsp;-r&amp;nbsp;requirements.txt&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;background-color: #ffc1c8;&quot;&gt;cuda pytorch가 gpu와 호환문제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;RuntimeError:&amp;nbsp;Your&amp;nbsp;device&amp;nbsp;does&amp;nbsp;not&amp;nbsp;support&amp;nbsp;the&amp;nbsp;current&amp;nbsp;version&amp;nbsp;of&amp;nbsp;Torch/CUDA!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;pip&amp;nbsp;install&amp;nbsp;torch==2.1.2&amp;nbsp;torchvision==0.16.2&amp;nbsp;--index-url&amp;nbsp;&lt;a href=&quot;https://download.pytorch.org/whl/cu121&quot;&gt;https://download.pytorch.org/whl/cu121&lt;/a&gt;&lt;/span&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 class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SJQEg/btsNpGfDDsP/yU38c11Fvjk8DrSfNAAp01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SJQEg/btsNpGfDDsP/yU38c11Fvjk8DrSfNAAp01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SJQEg/btsNpGfDDsP/yU38c11Fvjk8DrSfNAAp01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSJQEg%2FbtsNpGfDDsP%2FyU38c11Fvjk8DrSfNAAp01%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;393&quot; height=&quot;174&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;해당에러 발견&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;(xformers 의 호환성 에러)&lt;/span&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;background-color: #ffc1c8;&quot;&gt;해결을 위해 재설치&lt;/span&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;background-color: #ffc1c8;&quot;&gt;pip&amp;nbsp;uninstall&amp;nbsp;xformers&amp;nbsp;-y&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;pip&amp;nbsp;install&amp;nbsp;torch==2.1.2&amp;nbsp;torchvision==0.16.2&amp;nbsp;--index-url&amp;nbsp;&lt;a href=&quot;https://download.pytorch.org/whl/cu121&quot;&gt;https://download.pytorch.org/whl/cu121&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;pip&amp;nbsp;install&amp;nbsp;xformers==0.0.23.post1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이제 전부 완료되어서 잘나온다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;72&quot; data-start=&quot;56&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://civitai.com/models/165876/2d-pixel-toolkit-2d&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://civitai.com/models/165876/2d-pixel-toolkit-2d&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1745841830087&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;2D Pixel Toolkit (2D像素工具包) - Sprites_64 | Stable Diffusion LoRA | Civitai&quot; data-og-description=&quot;QQ交流群753289747，群内会不时发布内测模型 我的游戏已上线Steam商店页面，求求各位大佬加个愿望单~&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr; My game has been launched on Steam! Wishlist it now if you're interested! ❤️&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr; Stea...&quot; data-og-host=&quot;civitai.com&quot; data-og-source-url=&quot;https://civitai.com/models/165876/2d-pixel-toolkit-2d&quot; data-og-url=&quot;https://civitai.com/models/165876/2d-pixel-toolkit-2d&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ScYK4/hyYIbvgnUe/IzvBflgdNFFUwtPYWb6880/img.png?width=1207&amp;amp;height=220&amp;amp;face=0_0_1207_220,https://scrap.kakaocdn.net/dn/bb80Fb/hyYIcgC5HN/QfCH8VcsPKsoxdBi2doPjK/img.jpg?width=450&amp;amp;height=450&amp;amp;face=0_0_450_450&quot;&gt;&lt;a href=&quot;https://civitai.com/models/165876/2d-pixel-toolkit-2d&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://civitai.com/models/165876/2d-pixel-toolkit-2d&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ScYK4/hyYIbvgnUe/IzvBflgdNFFUwtPYWb6880/img.png?width=1207&amp;amp;height=220&amp;amp;face=0_0_1207_220,https://scrap.kakaocdn.net/dn/bb80Fb/hyYIcgC5HN/QfCH8VcsPKsoxdBi2doPjK/img.jpg?width=450&amp;amp;height=450&amp;amp;face=0_0_450_450');&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;2D Pixel Toolkit (2D像素工具包) - Sprites_64 | Stable Diffusion LoRA | Civitai&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;QQ交流群753289747，群内会不时发布内测模型 我的游戏已上线Steam商店页面，求求各位大佬加个愿望单~&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr; My game has been launched on Steam! Wishlist it now if you're interested! ❤️&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr; Stea...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;civitai.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;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;C:\python\2dCreateAnime\stable-diffusion-webui-forge\models\Lora&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 이미지처럼&amp;nbsp; &amp;nbsp;Lora에 pixel sprites 항목이 추가된다.&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; prompt에 &amp;nbsp;&amp;lt;lora:pixel sprites:1&amp;gt; 가 추가되면서 설정을 추가할수있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crR29B/btsNCdLvTev/3wXbmj3xdZbN2OhpALGVDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crR29B/btsNCdLvTev/3wXbmj3xdZbN2OhpALGVDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crR29B/btsNCdLvTev/3wXbmj3xdZbN2OhpALGVDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrR29B%2FbtsNCdLvTev%2F3wXbmj3xdZbN2OhpALGVDk%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;544&quot; height=&quot;522&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 해당 설정을 더 잘사용하기위해 추천모델들이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1745841771753&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;AnyLoRA - Checkpoint - bakedVae (blessed) fp16 NOT-PRUNED | Stable Diffusion Checkpoint | Civitai&quot; data-og-description=&quot;AnyLoRA Add a ❤️ to receive future updates. Do you like what I do? Consider supporting me on Patreon  ️ or feel free to buy me a coffee ☕ For LCM rea...&quot; data-og-host=&quot;civitai.com&quot; data-og-source-url=&quot;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&quot; data-og-url=&quot;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eCjqM/hyYMbOyTVg/RF7gywNTPc760TnoCx5y20/img.png?width=1207&amp;amp;height=220&amp;amp;face=0_0_1207_220,https://scrap.kakaocdn.net/dn/i7Ch0/hyYIeFxrfG/8ykblHgqwx6Pj9sK5RzWkk/img.jpg?width=450&amp;amp;height=292&amp;amp;face=0_0_450_292&quot;&gt;&lt;a href=&quot;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://civitai.com/models/23900/anylora-checkpoint?modelVersionId=95489&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eCjqM/hyYMbOyTVg/RF7gywNTPc760TnoCx5y20/img.png?width=1207&amp;amp;height=220&amp;amp;face=0_0_1207_220,https://scrap.kakaocdn.net/dn/i7Ch0/hyYIeFxrfG/8ykblHgqwx6Pj9sK5RzWkk/img.jpg?width=450&amp;amp;height=292&amp;amp;face=0_0_450_292');&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;AnyLoRA - Checkpoint - bakedVae (blessed) fp16 NOT-PRUNED | Stable Diffusion Checkpoint | Civitai&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AnyLoRA Add a ❤️ to receive future updates. Do you like what I do? Consider supporting me on Patreon  ️ or feel free to buy me a coffee ☕ For LCM rea...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;civitai.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;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVbtT3/btsNDEO8gr7/Cqk1GHbRSipFQpk4Kj2iGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVbtT3/btsNDEO8gr7/Cqk1GHbRSipFQpk4Kj2iGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVbtT3/btsNDEO8gr7/Cqk1GHbRSipFQpk4Kj2iGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVbtT3%2FbtsNDEO8gr7%2FCqk1GHbRSipFQpk4Kj2iGk%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;1239&quot; height=&quot;759&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;759&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;p data-ke-size=&quot;size16&quot;&gt;C:\python\2dCreateAnime\stable-diffusion-webui-forge\models\Stable-diffusion 에추가하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 Chekpoint 에 새로운 항목을 추가할수 있다.&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;00007-2933384410.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8w2NR/btsNDaHAYmv/50xcXAOZ4DOrjVQZpuw4ZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8w2NR/btsNDaHAYmv/50xcXAOZ4DOrjVQZpuw4ZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8w2NR/btsNDaHAYmv/50xcXAOZ4DOrjVQZpuw4ZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8w2NR%2FbtsNDaHAYmv%2F50xcXAOZ4DOrjVQZpuw4ZK%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;512&quot; height=&quot;512&quot; data-filename=&quot;00007-2933384410.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&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;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;2d의 포즈를 얻기위해서는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f2937; text-align: center;&quot;&gt;ControlNet Integrated 설정이 필요한데 해당설정은 다음글에서&lt;/span&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;&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;&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;&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;&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;&amp;nbsp;&lt;/p&gt;</description>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/60</guid>
      <comments>https://programing-note.tistory.com/entry/AI%EB%A1%9C-%EA%B2%A9%ED%88%AC%EA%B2%8C%EC%9E%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-1AI%EB%A1%9C-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%EB%BD%91%EA%B8%B0#entry60comment</comments>
      <pubDate>Mon, 28 Apr 2025 15:05:38 +0900</pubDate>
    </item>
    <item>
      <title>백조의 호수[백준:3197]플래티넘5</title>
      <link>https://programing-note.tistory.com/entry/%EB%B0%B1%EC%A1%B0%EC%9D%98-%ED%98%B8%EC%88%98%EB%B0%B1%EC%A4%803197%ED%94%8C%EB%9E%98%ED%8B%B0%EB%84%985</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1145&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lozve/btsMIrbnGxK/8QOsgwrxvAsuv6dBFgp07K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lozve/btsMIrbnGxK/8QOsgwrxvAsuv6dBFgp07K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lozve/btsMIrbnGxK/8QOsgwrxvAsuv6dBFgp07K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flozve%2FbtsMIrbnGxK%2F8QOsgwrxvAsuv6dBFgp07K%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;1145&quot; height=&quot;601&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;601&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;1085&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ei07Wa/btsMHsWsO76/CGFHlFzeP4r1sYebguqGkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ei07Wa/btsMHsWsO76/CGFHlFzeP4r1sYebguqGkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ei07Wa/btsMHsWsO76/CGFHlFzeP4r1sYebguqGkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fei07Wa%2FbtsMHsWsO76%2FCGFHlFzeP4r1sYebguqGkk%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;1085&quot; height=&quot;291&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3197&quot;&gt;https://www.acmicpc.net/problem/3197&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&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;361&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWk3gJ/btsMIpYSqz9/kIP4KlGgqaLJrVPtOkOJw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWk3gJ/btsMIpYSqz9/kIP4KlGgqaLJrVPtOkOJw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWk3gJ/btsMIpYSqz9/kIP4KlGgqaLJrVPtOkOJw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWk3gJ%2FbtsMIpYSqz9%2FkIP4KlGgqaLJrVPtOkOJw0%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;361&quot; height=&quot;154&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;154&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;p data-ke-size=&quot;size16&quot;&gt;X = 얼음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&amp;nbsp; &amp;nbsp;= 호수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;L&amp;nbsp; =&amp;nbsp; 백조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루마다 호수에 맞닿아 있는 얼음이 녹는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백조는 며칠뒤에 서로 만날 수 있을지 구하는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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;&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://hsin.hr/2005/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://hsin.hr/2005/&lt;/a&gt;&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;465&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/09m9e/btsMIGlTbX7/9ahOEgEobkciUs7D2YYIV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/09m9e/btsMIGlTbX7/9ahOEgEobkciUs7D2YYIV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/09m9e/btsMIGlTbX7/9ahOEgEobkciUs7D2YYIV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F09m9e%2FbtsMIGlTbX7%2F9ahOEgEobkciUs7D2YYIV1%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;465&quot; height=&quot;189&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;189&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;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;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;문제 풀이에 사용한 알고리즘은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BFS , UnionFind&amp;nbsp; 두개다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 아래 두가지 라고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;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;&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;해결방식&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1741682971483&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;
#include &amp;lt;queue&amp;gt;
using namespace std;
vector&amp;lt;pair&amp;lt; int, int&amp;gt;&amp;gt; Swans;
queue&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; X_queue, TempQueue, * PointerQueue, * TempPointerQueue;
const static vector &amp;lt; vector&amp;lt;int&amp;gt;&amp;gt; Mover{ {1,0},{0,1},{-1,0},{0,-1} };
const static vector &amp;lt; vector&amp;lt;int&amp;gt;&amp;gt; InputMover{ {0,-1},{-1,0} };
vector&amp;lt;int&amp;gt; lakeList;

int UnionFInd(int Num) {
	if (lakeList[Num] == Num)
		return Num;
	return lakeList[Num] = UnionFInd(lakeList[Num]);
}

void Union(int Left, int Right) {
	int LNum = UnionFInd(Left);
	int RNum = UnionFInd(Right);
	if (LNum == RNum)return;
	if (LNum &amp;gt; RNum) {
		lakeList[LNum] = RNum;
	}
	else {
		lakeList[RNum] = LNum;
	}
}
enum Tile
{
	X = -88,
	x = -120,
	L = -76,
	dot = -46
};
void SwanLake() {
	int R, C;
	cin &amp;gt;&amp;gt; R &amp;gt;&amp;gt; C;
	vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; lake(R, vector&amp;lt;int&amp;gt;(C));
	vector&amp;lt; int&amp;gt; L_Point(2);
	int numb = 1;
	lakeList.push_back(0);
	for (int i = 0; i &amp;lt; R; ++i) {
		for (int j = 0; j &amp;lt; C; ++j) {
			char chardata;
			cin &amp;gt;&amp;gt; chardata;
			lake[i][j] = -(int)chardata;
			if (chardata == 'L') Swans.push_back({ i,j });
			int after = -1, before = -1;

			for (auto M : InputMover) {
				if (0 &amp;gt; i + M[0] || 0 &amp;gt; j + M[1] || R &amp;lt;= i + M[0] || C &amp;lt;= j + M[1])continue;
				if ((lake[i][j] == Tile::dot || lake[i][j] == Tile::L) &amp;amp;&amp;amp; lake[i + M[0]][j + M[1]] == Tile::X) {
					X_queue.push({ i + M[0],j + M[1] });
					lake[i + M[0]][j + M[1]] = Tile::x;
				}
				if (lake[i][j] == Tile::X &amp;amp;&amp;amp; lake[i + M[0]][j + M[1]] &amp;gt; 0) {
					X_queue.push({ i,j });
					lake[i][j] = Tile::x;
				}

				if ((lake[i][j] == Tile::dot || lake[i][j] == Tile::L) &amp;amp;&amp;amp; lake[i + M[0]][j + M[1]] &amp;gt; 0) {
					if (after == -1) {
						after = lake[i + M[0]][j + M[1]];
					}
					else {
						before = lake[i + M[0]][j + M[1]];
					}

				}
			}
			if ((lake[i][j] == Tile::dot || lake[i][j] == Tile::L)) {
				if (after == -1) {
					lake[i][j] = numb;
					lakeList.push_back(numb++);

				}
				else if (before == -1) {
					lake[i][j] = after;
				}
				else {
					Union(after, before);
					lake[i][j] = UnionFInd(after);
				}
			}


		}
	}

	for (int i = 0; i &amp;lt; 2; ++i) {
		L_Point[i] = (lake[Swans[i].first][Swans[i].second]);
	}
	int day = 0;
	if (UnionFInd(L_Point[0]) == UnionFInd(L_Point[1])) {
		cout &amp;lt;&amp;lt; day;
		return;
	}


	do {
		day++;
		PointerQueue = &amp;amp;((X_queue.empty()) ? TempQueue : X_queue);
		TempPointerQueue = &amp;amp;((!X_queue.empty()) ? TempQueue : X_queue);
		while (!PointerQueue-&amp;gt;empty())
		{
			auto data = PointerQueue-&amp;gt;front();
			PointerQueue-&amp;gt;pop();
			int Isbridge = 0;
			int firstbridge = -1, secondbridge = -1;

			for (auto M : Mover) {
				if (0 &amp;gt; data.first + M[0] || 0 &amp;gt; data.second + M[1] || R &amp;lt;= data.first + M[0] || C &amp;lt;= data.second + M[1])continue;
				if (lake[data.first + M[0]][data.second + M[1]] == Tile::X)
				{
					lake[data.first + M[0]][data.second + M[1]] = Tile::x;
					TempPointerQueue-&amp;gt;push({ data.first + M[0] ,data.second + M[1] });
				}
				else if (lake[data.first + M[0]][data.second + M[1]] &amp;gt;= 0) {

					if (Isbridge != 0) {
						Union(lake[data.first][data.second], lake[data.first + M[0]][data.second + M[1]]);
					}
					else {
						Isbridge = lake[data.first + M[0]][data.second + M[1]];
						lake[data.first][data.second] = Isbridge;
					}
				}
			}
		}

		if (UnionFInd(L_Point[0]) == UnionFInd(L_Point[1]))break;


	} while (!TempPointerQueue-&amp;gt;empty());
	cout &amp;lt;&amp;lt; day;
}



int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	SwanLake();

}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘</category>
      <category>백조의호수</category>
      <category>백준</category>
      <category>알고리즘</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/59</guid>
      <comments>https://programing-note.tistory.com/entry/%EB%B0%B1%EC%A1%B0%EC%9D%98-%ED%98%B8%EC%88%98%EB%B0%B1%EC%A4%803197%ED%94%8C%EB%9E%98%ED%8B%B0%EB%84%985#entry59comment</comments>
      <pubDate>Tue, 11 Mar 2025 18:44:12 +0900</pubDate>
    </item>
    <item>
      <title>어른상어 [백준:19237]골드</title>
      <link>https://programing-note.tistory.com/entry/%EC%96%B4%EB%A5%B8%EC%83%81%EC%96%B4-%EB%B0%B1%EC%A4%8019237%EA%B3%A8%EB%93%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;으른 상어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1068&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfwbT8/btsLp6mnsL6/3XighWKfTadTG6Yvn0jxWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfwbT8/btsLp6mnsL6/3XighWKfTadTG6Yvn0jxWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfwbT8/btsLp6mnsL6/3XighWKfTadTG6Yvn0jxWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfwbT8%2FbtsLp6mnsL6%2F3XighWKfTadTG6Yvn0jxWk%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;1068&quot; height=&quot;228&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/19237&quot;&gt;https://www.acmicpc.net/problem/19237&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제의 구조는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력받기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상어의 이동 방향&amp;nbsp; 데이터 받아오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상어의 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상어의 냄새 남기기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서로 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCkGLV/btsLqRhYy9z/KPKyT7xc51pfzhze0lbuE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCkGLV/btsLqRhYy9z/KPKyT7xc51pfzhze0lbuE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCkGLV/btsLqRhYy9z/KPKyT7xc51pfzhze0lbuE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCkGLV%2FbtsLqRhYy9z%2FKPKyT7xc51pfzhze0lbuE0%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;372&quot; height=&quot;334&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;334&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvYgyO/btsLp3JXBom/GAFKdKPHinPk6kQzGBDgy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvYgyO/btsLp3JXBom/GAFKdKPHinPk6kQzGBDgy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvYgyO/btsLp3JXBom/GAFKdKPHinPk6kQzGBDgy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvYgyO%2FbtsLp3JXBom%2FGAFKdKPHinPk6kQzGBDgy1%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;270&quot; height=&quot;275&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위이미지처럼 1번 상어부터&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽을 보기에&amp;nbsp; 맨 아래&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;418&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/39ei8/btsLpFpiEWe/hXfcPB0X3OqrFb04SVU7RK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/39ei8/btsLpFpiEWe/hXfcPB0X3OqrFb04SVU7RK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/39ei8/btsLpFpiEWe/hXfcPB0X3OqrFb04SVU7RK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F39ei8%2FbtsLpFpiEWe%2FhXfcPB0X3OqrFb04SVU7RK%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;418&quot; height=&quot;356&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;356&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;냄새를 남긴다.&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elKP5C/btsLqTNCIui/gaz1XQKkNh8djOkVbbAQmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elKP5C/btsLqTNCIui/gaz1XQKkNh8djOkVbbAQmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elKP5C/btsLqTNCIui/gaz1XQKkNh8djOkVbbAQmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelKP5C%2FbtsLqTNCIui%2Fgaz1XQKkNh8djOkVbbAQmk%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;396&quot; height=&quot;329&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 겹칠 경우 낮은 값을 가진 상어가 이긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제를 해결할 때 냄새를 업데이트한다면 시간이 많이 걸릴 것이라 생각했기에 time으로 그냥 계산해 준다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문제에서 26 퍼에서 틀린다면 1000 이상 인지 초과인지&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;&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;pre id=&quot;code_1734620385820&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;vector&amp;gt;

using namespace std;
static const int SharkBasic_Mover[4][2] = { {0,-1} ,{0,1}, {-1,0}, {1,0} };
enum direction {
	UP = 0,
	DOWN,
	LEFT,
	RIGHT
};
struct Shark
{
public:
	Shark() {
		Mover = vector&amp;lt;vector&amp;lt;direction&amp;gt;&amp;gt;(4, vector&amp;lt;direction&amp;gt;(4));
		Sharknumber = -1;
		PosX = -1, PosY = -1;
	}

	vector&amp;lt;vector&amp;lt;direction&amp;gt;&amp;gt; Mover;
	direction dir;
	int PosX, PosY, Sharknumber;
	bool IS_Alive = true;
};

void AdultShark() {
	//N*N , M개상어, K냄새 남는시간
	int N = 0, M = 0, K = 0, time = 0;
	//현재시간과 비교해서 사라졌는지 확인
	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M &amp;gt;&amp;gt; K;
	vector&amp;lt; Shark&amp;gt;Sharks(M, Shark());
	vector&amp;lt;vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;&amp;gt; World(N, vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;(N, make_pair(-1, -1)));
	int num = 0;
	for (int i = 0; i &amp;lt; N; ++i) {
		for (int j = 0; j &amp;lt; N; ++j) {
			cin &amp;gt;&amp;gt; num;
			if (num != 0) {
				Sharks[num - 1].PosX = j;
				Sharks[num - 1].PosY = i;
				Sharks[num - 1].Sharknumber = num - 1;
				World[j][i] = make_pair(num - 1, time);

			}
		}
	}
	//상어방향
	for (int i = 0; i &amp;lt; M; ++i) {
		cin &amp;gt;&amp;gt; num;
		Sharks[i].dir = direction(num - 1);
	}
	//방향우선순위
	for (int i = 0; i &amp;lt; M; ++i) {
		for (int j = 0; j &amp;lt; 4; ++j) {
			for (int k = 0; k &amp;lt; 4; ++k) {
				cin &amp;gt;&amp;gt; num;
				Sharks[i].Mover[j][k] = direction(num - 1);
			}
		}
	}
	vector&amp;lt;direction&amp;gt;* MoveDir;
	int x = 0, y = 0;
	while (M != 1)
	{
		time++;
		//이동할 위치 넣기
		for (Shark&amp;amp; S : Sharks) {
			if (S.IS_Alive == false) continue;
			//move
			MoveDir = &amp;amp;(S.Mover[S.dir]);
			direction nowdir = S.dir;
			int Smellx = -1, Smelly = -1;
			bool ISMove = false;
			for (int i = 0; i &amp;lt; MoveDir-&amp;gt;size(); ++i) {

				x = S.PosX + SharkBasic_Mover[(int)((*MoveDir)[i])][0];
				y = S.PosY + SharkBasic_Mover[(int)((*MoveDir)[i])][1];
				if (x &amp;lt; 0 || N &amp;lt;= x || y &amp;lt; 0 || N &amp;lt;= y)continue;
				if (World[x][y].first == -1) {
					S.dir = (*MoveDir)[i];
					S.PosX = x;
					S.PosY = y;
					ISMove = true;
					break;
				}
				else {
					// 현재 -   기록 시간       유지시간
					if (((time - World[x][y].second) &amp;gt; K)) { //  (3time - 1) 2냄새 지남 
						//빈칸취급
						S.dir = (*MoveDir)[i];
						S.PosX = x;
						S.PosY = y;
						ISMove = true;
						break;
					}//                                              선턴
					else if (World[x][y].first == S.Sharknumber &amp;amp;&amp;amp; Smellx == -1) {
						Smellx = x;
						Smelly = y;
						nowdir = (*MoveDir)[i];
					}
				}
			}
			//냄새칸 첫위치
			if (ISMove == false) {
				S.PosX = Smellx;
				S.PosY = Smelly;
				S.dir = nowdir;
			}
		}


		for (int i = 0 ; i &amp;lt; Sharks.size();++i)
		{
			Shark&amp;amp; S = Sharks[i];
			if (S.IS_Alive == false) continue;

			if (World[S.PosX][S.PosY].second == time) {
				S.IS_Alive = false;
				M--;
			}
			else
			{
				World[S.PosX][S.PosY] = make_pair(S.Sharknumber, time);
			}
		}

		if (time &amp;gt; 1000) { time = -1; break; }
	}
	cout &amp;lt;&amp;lt; time;
}

int main() {


	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);

	AdultShark();
}&lt;/code&gt;&lt;/pre&gt;</description>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/56</guid>
      <comments>https://programing-note.tistory.com/entry/%EC%96%B4%EB%A5%B8%EC%83%81%EC%96%B4-%EB%B0%B1%EC%A4%8019237%EA%B3%A8%EB%93%9C#entry56comment</comments>
      <pubDate>Fri, 20 Dec 2024 01:41:54 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio 의 LNK1136 에러</title>
      <link>https://programing-note.tistory.com/entry/Visual-Studio-%EC%9D%98-LNK1136-%EC%97%90%EB%9F%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘 문제 코드 수정후 재빌드 상태에서 강제 취소 했을때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LNK1136 에러가 났다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 에러는 빌드시 불러오는 헤더에서 문제가 생긴것으로 추측하고있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;395&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lAcJc/btsLkIU9wUq/gbRMvKrbEO2mgiYgt8Y7E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lAcJc/btsLkIU9wUq/gbRMvKrbEO2mgiYgt8Y7E0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lAcJc/btsLkIU9wUq/gbRMvKrbEO2mgiYgt8Y7E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlAcJc%2FbtsLkIU9wUq%2FgbRMvKrbEO2mgiYgt8Y7E0%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;395&quot; height=&quot;102&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 빌드 시 문제가 해결된다.&lt;/p&gt;</description>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/55</guid>
      <comments>https://programing-note.tistory.com/entry/Visual-Studio-%EC%9D%98-LNK1136-%EC%97%90%EB%9F%AC#entry55comment</comments>
      <pubDate>Tue, 17 Dec 2024 19:35:01 +0900</pubDate>
    </item>
    <item>
      <title>그냥 내가 자주 쓰던 visual studio 단축키</title>
      <link>https://programing-note.tistory.com/entry/%EA%B7%B8%EB%83%A5-%EB%82%B4%EA%B0%80-%EC%9E%90%EC%A3%BC-%EC%93%B0%EB%8D%98-visual-studio-%EB%8B%A8%EC%B6%95%ED%82%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ctrl +, 또는 ctrl + t&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;453&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JPkgl/btsKRycoZ4x/bQUTjGi7CylYPNQd3v6M80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JPkgl/btsKRycoZ4x/bQUTjGi7CylYPNQd3v6M80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JPkgl/btsKRycoZ4x/bQUTjGi7CylYPNQd3v6M80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJPkgl%2FbtsKRycoZ4x%2FbQUTjGi7CylYPNQd3v6M80%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;453&quot; height=&quot;351&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;351&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ctrl +. :빠른작업&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;325&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcsMh/btsKPOAMDSv/oMfOPXxm3mRi5qJvYy9Wm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcsMh/btsKPOAMDSv/oMfOPXxm3mRi5qJvYy9Wm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcsMh/btsKPOAMDSv/oMfOPXxm3mRi5qJvYy9Wm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcsMh%2FbtsKPOAMDSv%2FoMfOPXxm3mRi5qJvYy9Wm0%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;325&quot; height=&quot;141&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;141&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;&lt;br /&gt;ctrl +j : &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&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;409&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhk57Z/btsKQeF8FhF/RxmxUbooP0yKXcj84r44dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhk57Z/btsKQeF8FhF/RxmxUbooP0yKXcj84r44dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhk57Z/btsKQeF8FhF/RxmxUbooP0yKXcj84r44dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhk57Z%2FbtsKQeF8FhF%2FRxmxUbooP0yKXcj84r44dk%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;409&quot; height=&quot;229&quot; data-origin-width=&quot;409&quot; data-origin-height=&quot;229&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ctrl + r +r : 함수나 변수 명을 한번에 변경&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/de15yD/btsKPSpJFEA/ED1YZs0wqyIv0v0jZaFsOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/de15yD/btsKPSpJFEA/ED1YZs0wqyIv0v0jZaFsOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/de15yD/btsKPSpJFEA/ED1YZs0wqyIv0v0jZaFsOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fde15yD%2FbtsKPSpJFEA%2FED1YZs0wqyIv0v0jZaFsOK%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;479&quot; height=&quot;232&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ctrl + k +d : 줄 자동 정렬&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pWdkr/btsKRnB17EF/JZJyLKJDZqB8OEAWGm8Z0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pWdkr/btsKRnB17EF/JZJyLKJDZqB8OEAWGm8Z0K/img.png&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;161&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.0326%; margin-right: 10px;&quot; data-widthpercent=&quot;54.67&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pWdkr/btsKRnB17EF/JZJyLKJDZqB8OEAWGm8Z0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpWdkr%2FbtsKRnB17EF%2FJZJyLKJDZqB8OEAWGm8Z0K%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;470&quot; height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgt2F8/btsKQgjHpia/qalQhxhiicJJFCx4B9FONK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgt2F8/btsKQgjHpia/qalQhxhiicJJFCx4B9FONK/img.png&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;145&quot; data-is-animation=&quot;false&quot; style=&quot;width: 44.8046%;&quot; data-widthpercent=&quot;45.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgt2F8/btsKQgjHpia/qalQhxhiicJJFCx4B9FONK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgt2F8%2FbtsKQgjHpia%2FqalQhxhiicJJFCx4B9FONK%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;351&quot; height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/div&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;ctrl + k +c&amp;nbsp; : 주석 으로 변경&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDiD2u/btsKPHhGOFT/KbMpAAWK78367AsSzPOXUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDiD2u/btsKPHhGOFT/KbMpAAWK78367AsSzPOXUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDiD2u/btsKPHhGOFT/KbMpAAWK78367AsSzPOXUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDiD2u%2FbtsKPHhGOFT%2FKbMpAAWK78367AsSzPOXUK%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;347&quot; height=&quot;65&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;65&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;ctrl + k + u : 주석 해제 - 하나씩 해제&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BlkP5/btsKQExrPIR/lrMFzImpA00LRygbMqO2L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BlkP5/btsKQExrPIR/lrMFzImpA00LRygbMqO2L1/img.png&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;100&quot; data-is-animation=&quot;false&quot; style=&quot;width: 38.8623%; margin-right: 10px;&quot; data-widthpercent=&quot;39.32&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BlkP5/btsKQExrPIR/lrMFzImpA00LRygbMqO2L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBlkP5%2FbtsKQExrPIR%2FlrMFzImpA00LRygbMqO2L1%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;325&quot; height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBFNtp/btsKPyrLMYJ/Y8o6oQiazsglLrzJHQQQVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBFNtp/btsKPyrLMYJ/Y8o6oQiazsglLrzJHQQQVk/img.png&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;64&quot; data-is-animation=&quot;false&quot; style=&quot;width: 59.9749%;&quot; data-widthpercent=&quot;60.68&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBFNtp/btsKPyrLMYJ/Y8o6oQiazsglLrzJHQQQVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBFNtp%2FbtsKPyrLMYJ%2FY8o6oQiazsglLrzJHQQQVk%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;321&quot; height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/div&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;p data-ke-size=&quot;size16&quot;&gt;ctrl + m + o :&amp;nbsp; 정의 부분만 보이기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9HgdR/btsKRps5tKd/KKkLxCXiw1Q65VCJkfptYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9HgdR/btsKRps5tKd/KKkLxCXiw1Q65VCJkfptYk/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;106&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.9512%; margin-right: 10px;&quot; data-widthpercent=&quot;47.5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9HgdR/btsKRps5tKd/KKkLxCXiw1Q65VCJkfptYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9HgdR%2FbtsKRps5tKd%2FKKkLxCXiw1Q65VCJkfptYk%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;400&quot; height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wf620/btsKQC0M0z6/zLWoNC7aaok2Z6s4yXCmY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wf620/btsKQC0M0z6/zLWoNC7aaok2Z6s4yXCmY0/img.png&quot; data-origin-width=&quot;196&quot; data-origin-height=&quot;47&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.886%;&quot; data-widthpercent=&quot;52.5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wf620/btsKQC0M0z6/zLWoNC7aaok2Z6s4yXCmY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwf620%2FbtsKQC0M0z6%2FzLWoNC7aaok2Z6s4yXCmY0%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;196&quot; height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;/div&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;p data-ke-size=&quot;size16&quot;&gt;f12 : 정의 탐색&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;27&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUZfod/btsKQy5pchh/Qz61k1Lk8KXaeIAT9eWxiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUZfod/btsKQy5pchh/Qz61k1Lk8KXaeIAT9eWxiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUZfod/btsKQy5pchh/Qz61k1Lk8KXaeIAT9eWxiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUZfod%2FbtsKQy5pchh%2FQz61k1Lk8KXaeIAT9eWxiK%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;29&quot; height=&quot;27&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;27&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;92&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIjobk/btsKO5QPEJC/b5jKqy1m1AsBakPKFD2jP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIjobk/btsKO5QPEJC/b5jKqy1m1AsBakPKFD2jP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIjobk/btsKO5QPEJC/b5jKqy1m1AsBakPKFD2jP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIjobk%2FbtsKO5QPEJC%2Fb5jKqy1m1AsBakPKFD2jP1%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;92&quot; height=&quot;24&quot; data-origin-width=&quot;92&quot; data-origin-height=&quot;24&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIR5YE/btsKO7nzgnG/re6QCknbvyHPfzrI8u9K8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIR5YE/btsKO7nzgnG/re6QCknbvyHPfzrI8u9K8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIR5YE/btsKO7nzgnG/re6QCknbvyHPfzrI8u9K8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIR5YE%2FbtsKO7nzgnG%2Fre6QCknbvyHPfzrI8u9K8K%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;998&quot; height=&quot;806&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;806&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;shift +f12 : 모든 참조 찾기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVX0jf/btsKRfjQ9TA/0YEAjwfVvC2NIOVDHLT5nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVX0jf/btsKRfjQ9TA/0YEAjwfVvC2NIOVDHLT5nK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVX0jf/btsKRfjQ9TA/0YEAjwfVvC2NIOVDHLT5nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVX0jf%2FbtsKRfjQ9TA%2F0YEAjwfVvC2NIOVDHLT5nK%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;2180&quot; height=&quot;94&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;94&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;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;f11 : 한단계씩 코드 실행 - 함수내부까지 들어감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f10 : 프로시저&amp;nbsp; 단위 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>언어</category>
      <category>내가 자주씀</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>개발서 작성</author>
      <guid isPermaLink="true">https://programing-note.tistory.com/54</guid>
      <comments>https://programing-note.tistory.com/entry/%EA%B7%B8%EB%83%A5-%EB%82%B4%EA%B0%80-%EC%9E%90%EC%A3%BC-%EC%93%B0%EB%8D%98-visual-studio-%EB%8B%A8%EC%B6%95%ED%82%A4#entry54comment</comments>
      <pubDate>Wed, 20 Nov 2024 22:55:57 +0900</pubDate>
    </item>
  </channel>
</rss>