<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jb_story.log</title>
        <link>https://velog.io/</link>
        <description>실패가 과정인 개발자가 되자</description>
        <lastBuildDate>Wed, 28 Dec 2022 14:06:30 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jb_story.log</title>
            <url>https://velog.velcdn.com/images/jb_story/profile/c7136268-3469-4ee7-a4ed-17da03b5ce05/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jb_story.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jb_story" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[OS] System call]]></title>
            <link>https://velog.io/@jb_story/OS-System-call</link>
            <guid>https://velog.io/@jb_story/OS-System-call</guid>
            <pubDate>Wed, 28 Dec 2022 14:06:30 GMT</pubDate>
            <description><![CDATA[<p>지금까지 OS 가 무엇인지 그리고 OS가 하는일과 CPU 와 쓰레드에 관하여 알아보는 시간을 가졌었습니다.</p>
<p>그렇다면 OS를 통해 CPU를 제어하거나 시스템 소프트웨어를 활용하고 싶을때는 어떻게 해야할까요?</p>
<h2 id="system-call">System call</h2>
<p><strong>Systemcall</strong> 이란 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 운영프로그램에서 커널에 접근하기 위한 인터페이스를 의미합니다. 
우리는 이러한 Systemcall 을 통해 프로세스와 같은 커널 모드에서만 사용가능한 명령들을 수행할 수 있습니다.</p>
<p>일반적으로 우리가 사용하는 C,C++과 같은 언어는 응용프로그램으로 User Mode 층에 해당합니다. 아래와 같이 유저 모드에서는 컴퓨터의 자원에 접근을 하지 못하는데 특별한 이유로 자원에 접근하여 제어를 해야할 때 System call을 통해 Kernel Mode에 들어가 프로그램 자원을 제어하고 컨트롤 하는 것입니다.</p>
<p><img src="https://velog.velcdn.com/images/jb_story/post/81e701c0-fdcd-4cdc-95b0-3f3f37fd5e02/image.png" alt=""></p>
<p>위의 사진 처럼 
User Mode-&gt; (System call)-&gt; Kernel Mode-&gt; return-&gt; UserMode 
의 흐름으로 흘러 가는 것 입니다.</p>
<h3 id="시스템-콜의-종류">시스템 콜의 종류</h3>
<h4 id="프로세스-컨트롤">프로세스 컨트롤</h4>
<ul>
<li>프로세스 생성 및 종료</li>
<li>메모리에 로드, 실행</li>
<li>프로세스 속성 값 확인, 지정</li>
<li>wait 이벤트, signal 이벤트<h4 id="메모리-할당">메모리 할당</h4>
</li>
<li>파일 메니지먼트</li>
<li>파일 생성, 파일 삭제</li>
<li>열기, 닫기</li>
<li>읽기, 쓰기, Reposition</li>
<li>파일 속성 값 확인, 지정<h4 id="디바이스-매니지먼트">디바이스 매니지먼트</h4>
</li>
<li>디바이스 요청 및 해제</li>
<li>읽기, 쓰기, Reposition</li>
<li>디바이스 속성 확인, 지정</li>
<li>비 물리적인 디바이스 해제 및 장착<h4 id="정보-관리">정보 관리</h4>
</li>
<li>시간 확인, 시간 지정</li>
<li>시스템 데이터 확인, 지정</li>
<li>프로세스, 파일, 디바이스 속성 가져오기</li>
<li>프로세스, 파일, 디바이스 속성 설정하기<h4 id="커뮤니케이션">커뮤니케이션</h4>
</li>
<li>커뮤니케이션 연결 생성 및 삭제</li>
<li>메시지 송신, 수신</li>
<li>상태 정보 전달</li>
<li>remote 디바이스 해제 및 장착<h4 id="보안">보안</h4>
</li>
<li>Permission 획득</li>
<li>Permission 설정</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[OS] OS란 무엇일까?]]></title>
            <link>https://velog.io/@jb_story/OS-OS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C</link>
            <guid>https://velog.io/@jb_story/OS-OS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C</guid>
            <pubDate>Wed, 28 Dec 2022 13:45:39 GMT</pubDate>
            <description><![CDATA[<p>개발자라면 항상 듣고 접하는 용어인 OS 에 대하여 알아보자.</p>
<h2 id="os">OS</h2>
<p>OS 란 Operating System의 약자로 운영체제라고 불리는  사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다.</p>
<p>아래와 같이 현재 많은 종류의 OS가 존재하며 각각의 OS 마다 사용하는 서비스나 특징이다르다
<img src="https://velog.velcdn.com/images/jb_story/post/8cc091b5-7f03-44f4-a698-0329e6a75d3a/image.png" alt=""></p>
<p>그렇다면 OS가 하는 정확한 일이 무엇이 있을까?
OS가 하는 일을 분류하여 간략하게 나열해보자.</p>
<h4 id="1-프로세스-관리">1. 프로세스 관리</h4>
<blockquote>
<p>운영체제에서 작동하는 응용 프로그램을 관리하는 기능이며, 어떤 의미에선 CPU를 관리하는 것이라고 생각할 수 있다.</p>
</blockquote>
<ul>
<li><p>프로세스, 스레드</p>
</li>
<li><p>스케줄링</p>
</li>
<li><p>동기화</p>
</li>
<li><p>IPC 통신</p>
<h4 id="2-저장장치-관리">2. 저장장치 관리</h4>
<blockquote>
<p>1차 저장장치에 해당하는 메인 메모리와 2차 저장장치에 해당하는 하드디스크 등을 관리하는 작업이다.</p>
</blockquote>
</li>
<li><p>메모리 관리</p>
</li>
<li><p>가상 메모리</p>
</li>
<li><p>파일 시스템</p>
<h4 id="3-네트워킹">3. 네트워킹</h4>
<blockquote>
<p>네트워크를 지원하기 위한 네트워크 프로토콜 등을 의미한다.</p>
</blockquote>
</li>
<li><p>TCP/IP</p>
</li>
<li><p>기타 프로토콜</p>
<h4 id="4-사용자-관리">4. 사용자 관리</h4>
<blockquote>
<p>컴퓨터의 Host 뿐만아니라 그 외의 Guest나 그룹들에 대하여 그들의 접근 권한을 설정해주는 것이다.</p>
</blockquote>
</li>
<li><p>계정 관리</p>
</li>
<li><p>접근권한 관리</p>
<h4 id="5-디바이스-드라이버">5. 디바이스 드라이버</h4>
<blockquote>
<p>하드웨어 적인 부분을 관리해 주는 부분이다.</p>
</blockquote>
</li>
<li><p>순차접근 장치</p>
</li>
<li><p>임의접근 장치</p>
</li>
<li><p>네트워크 장치</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[OS]Thread란?]]></title>
            <link>https://velog.io/@jb_story/OSThread%EB%9E%80</link>
            <guid>https://velog.io/@jb_story/OSThread%EB%9E%80</guid>
            <pubDate>Wed, 28 Dec 2022 13:25:32 GMT</pubDate>
            <description><![CDATA[<p>이전 회차에서 Process가 무엇인지 간단하게 배웠습니다.그렇다면 Thread 란 무엇일까요?</p>
<h2 id="thread">Thread</h2>
<p>   <img src="https://velog.velcdn.com/images/jb_story/post/4ce70dab-ddd9-4519-95e5-b98e2b1bb857/image.png" alt=""></p>
<p>쓰레드란 간단히 말하면 프로세스 내에서 실제로 작업을 수행하는 주체를 의미합니다.</p>
<ul>
<li>프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위</li>
<li>프로세스의 특정한 수행 경로</li>
<li>CPU 관점에서 최소 작업 단위</li>
</ul>
<h3 id="특징">특징</h3>
<ul>
<li>프로세스 내에서 Code, Data, Heap은 공유하고, Stack만 독립적으로 가진다.</li>
<li>같은 프로세스 내의 쓰레드는 서로 Stack을 제외한 메모리를 공유하며 실행된다.</li>
<li>각각의 쓰레드는 별도의 레지스터와 스택을 가지고 있지만 Heap 메모리는 서로 R/W 가능하다.</li>
<li>하나의 쓰레드가 프로세스 자원을 변경하면, 다른 쓰레드들은 변경된 사항을 즉시 볼 수 있다. (자원을 공유하기 때문에)</li>
</ul>
<p>그렇다면 Process 와 Thread의 정확한 차이는 무엇일까?</p>
<h2 id="process-와-thread의-차이">Process 와 Thread의 차이</h2>
<p>우선 프로세스는 실행 중일 때, 프로세스끼리 독립적이기 때문에 한 프로세스에서 문제가 발생해도 다른 프로세스에는 영향을 주지 않는다.</p>
<p>그러나 쓰레드는 메모리를 서로 공유하며 수행되기 때문에 여러 개의 쓰레드가 실행 중일 때, 하나의 쓰레드에서 문제가 발생하면 같은 프로세스 내의 모든 쓰레드는 강제 종료된다.</p>
<h2 id="멀티-프로세스--멀티-쓰레드">멀티 프로세스 &amp; 멀티 쓰레드</h2>
<h4 id="멀티-프로세스-multi-process">멀티 프로세스 (Multi-Process)</h4>
<p>하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 수행하도록 하는 것이다.</p>
<h4 id="장점">장점</h4>
<ul>
<li><p>여러 개의 자식 프로세스 중 하나에 문제가 발생해도 다른 프로세스에 영향을 주지 않는다.</p>
<h4 id="단점">단점</h4>
</li>
<li><p>프로세스당 메모리가 독립적이라 무거운 작업이 진행되어 문맥 교환 (Context Switch) 시 오버헤드가 발생한다.</p>
</li>
<li><p>자원 공유가 안돼있기 때문에 프로세스 간의 통신 기법(IPC)이 복잡하다.</p>
</li>
</ul>
<h4 id="멀티-쓰레드-multi-thread">멀티 쓰레드 (Multi-Thread)</h4>
<p>하나의 응용 프로그램을 여러 개의 쓰레드로 구성하여 각 쓰레드가 하나의 작업을 수행하도록 하는 것이다. 웹서버가 대표적인 멀티 쓰레드 응용 프로그램이다.</p>
<h4 id="장점-1">장점</h4>
<ul>
<li><p>프로세스에 비해 생성하는 과정이 가볍기 때문에 자원을 효율적으로 사용할 수 있다.</p>
</li>
<li><p>데이터 공유로 자원 소모가 감소하며 작업량이 작아 문맥교환이 빠르게 이루어져 시스템 처리량이 증가한다.</p>
</li>
<li><p>Stack 을 제외하고 저장공간을 공유하기에 사용자에 대한 응답성이 향상된다.</p>
</li>
</ul>
<h4 id="단점-1">단점</h4>
<ul>
<li><p>자원을 공유하기 때문에 쓰레드 하나가 프로세스 내 자원을 회손할 경우 모든 프로세스가 종료될 수 있다.</p>
</li>
<li><p>자원을 공유하기 때문에 DeadLock이 발생하지 않도록 주의해야 한다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 1874번 스택 수열]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-1874%EB%B2%88-%EC%8A%A4%ED%83%9D-%EC%88%98%EC%97%B4</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-1874%EB%B2%88-%EC%8A%A4%ED%83%9D-%EC%88%98%EC%97%B4</guid>
            <pubDate>Mon, 12 Dec 2022 10:44:08 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/f95f69cf-2dda-4e7e-9cb7-fa838ae52e09/image.png" alt="">
해당 문제는 주어진 1부터 n까지의 숫자를 스택을 이용하여 넣고 빼면서 주어진 수열을 만들 수 있는지를 판단하는 문제이다.</p>
<p>개인적 처음에 문제를 제대로 이해하지 못하였는데,1부터n까지의 숫자를 갖고있고 해당 숫자를 스택에 넣었다가 빼야지만 주어진 수열을 만드는데 쓸 수 있는 규칙인거 같다.
또한, 스택에서 뺀 순간 수열에 포함 되기때문에 주어진 수열을 만들 수 없을수도 있다.</p>
<p>해당 문제를 풀때 필요한 규칙이다.</p>
<blockquote>
<p>1) 수열을 이루는 숫자는 스택에서 꺼내야 한다.
2) 스택의 숫자는 무조건 오름차 순으로 들어가야 한다.
3) 스택에서 pop한 숫자는 무조건 수열에 들어간다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/jb_story/post/796c523c-0489-4863-a0a1-8bbcdda06e34/image.png" alt="">
이게 내가 만든 풀이이다. 더 좋은 풀이가 무조건 있을꺼라고 생각이 들만큼 문제를 제대로 풀지 못했다고 생각한다.</p>
<p>위 풀이에서의 조건은</p>
<blockquote>
<p>1)수열의 숫자가 스택의 top의 숫자보다 클때
2)수열의 숫자가 스택의 top의 숫자보다 작을때
3)수열의 숫자가 스택의 top의 숫자랑 같을때</p>
</blockquote>
<p>우선 나는 stack에 0을 미리 넣어주고, 마지막으로 스택에 넣은 숫자를 idx라는 변수를 통해 표시해 놨다.</p>
<p>1번 조건이 실행될때, 수열의 숫자(num)와 같아질때 까지 stack에 숫자를 push해주고 +를 answer리스트에 넣어 줫다. 또한, 마지막으로 stack에 넣은 숫자는 idx에 저장해줫다.</p>
<p>2번 조건이 실행될때는 수열이 해당 stack으로 만들 수 없는 경우이다. 수열의 num 가 stack에 top보다 작은경우 top 부터 뺄 수 있는 stack은 위에서의 문제 규칙 3번에 의해 수열을 만들 수 없게되기 때문에 answer리스트를 비워주고 &quot;No&quot;를 넣은 후 for문을 break해줫다.</p>
<p>3번 조건이 실행될때는 stack의 top이 수열의 숫자(num)과 같음으로 answer리스트에 &quot;-&quot;를 넣어주고 stack을 pop 시켜줬다.</p>
<p>그리고 최종적으로 answer 리스트를 출력양식에 맞게 출력해줫다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 11726번 2xn 타일링]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-11726%EB%B2%88-2xn-%ED%83%80%EC%9D%BC%EB%A7%81</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-11726%EB%B2%88-2xn-%ED%83%80%EC%9D%BC%EB%A7%81</guid>
            <pubDate>Mon, 12 Dec 2022 10:18:31 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/d15efc52-9b93-440d-a600-5451eb730fdd/image.png" alt="">
해당 문제는 매우 쉬운 DP 문제이다.
2xn 크기의 직사각형의 타일을 채우기 위해서 1x2, 2x1의 타일을 사용할 수 있다.
사실 2x1은 혼자서 사용 못하기때문에 2x2 타일이라고 생각하면 편하다.
결국 이 문제는 n을 1과 2를 이용해서 만들라는 문제이다.</p>
<p>예를들어 5를 만들때는 (1,1,1,1,1),(1,1,1,2),(1,1,2,1),(1,2,1,1),(2,1,1,1),(1,2,2),(2,1,2),(2,2,1) 의 경우가 나오는데</p>
<p>이는 3을 만드는경우에 2크기의 타일을 더해주는 것과 4을 만드는 경우에 1크기의 타일을 더해주는 것의 합이다.
결국 아래와 같은 점화식이 나온다.</p>
<blockquote>
<p>dp(n)=dp(n-1)+dp(n-2)</p>
</blockquote>
<p>크기가 매우 커져서 문제에서 10,007로 나누라는 조건이 주어지니 놓치지 말자.
<img src="https://velog.velcdn.com/images/jb_story/post/468d3dca-ccd3-4dfa-b5cf-d660af115932/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 10828번 스택]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-10828%EB%B2%88-%EC%8A%A4%ED%83%9D</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-10828%EB%B2%88-%EC%8A%A4%ED%83%9D</guid>
            <pubDate>Mon, 12 Dec 2022 09:54:32 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/1948b740-eddb-492b-beb0-08280e19ea46/image.png" alt="">
해당 문제는 사실 별 의미가 없는 문제이다.자료구조에서 많이 사용되는 스택, 큐, 리스트 중 하나인 스택을 직접 만들어 보는 문제인데 요즘 왠만한 라이브러리에서 스택,리스트,큐는 제공이 된다.</p>
<p>스택은 LIFO(Last In First Out)형태의 자료 구조이다.
스택의 특징은 다음과 같다.</p>
<blockquote>
<p>1)스택의 top을 통해서만 접근이 가능하다.
2)LIFO(Last In First Out)의 규칙이 있다.
3)정해진 방향인 top에만 쌓을 수 있다.</p>
</blockquote>
<p>간단하게 스택에 대해서 알게 됐으니 해당 문제의 풀이를 올리고 넘어가겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/jb_story/post/fb09afe8-752f-41f0-8dcb-8dc8315dd78b/image.png" alt="">
<img src="https://velog.velcdn.com/images/jb_story/post/d3523c45-eb28-475f-b2c5-d7273aa127a0/image.png" alt=""></p>
<p>저는 주어지는 명령어 갯수 만큼 Switch 문법을 통해 해결했습니다.
물론 더 좋고 짧은 풀이가 있겠지만 단순 구현 문제이기 때문에 넘어가겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 9095번 1,2,3 더하기]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-9095%EB%B2%88-123-%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-9095%EB%B2%88-123-%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 11 Dec 2022 08:11:52 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/97ea25cf-a0d3-4b10-8e36-1fd5d5062d47/image.png" alt=""></p>
<p>해당 문제는 정수 N에 대해 n을 1,2,3의 합으로 나타내는 방법을 구하는 것 이다.
저는 Bottom-Top 방식으로 접근을 하였는데, 예를 들어 4의 경우 1+3,2+2,3+1 의 경우로 나누어 준 것이다.
<img src="https://velog.velcdn.com/images/jb_story/post/8b1fc465-03ef-43f4-8fc6-8ce749cdfaff/image.png" alt="">
해당 사진을 보면 네모는 4=1+3인경우 동그라미는 2+2의 경우 세모는 3+1의 경우를 보여줍니다.
5,6,7까지 가면서 하나 하나 세워보면(꼭 그럴 필요는 없지만)</p>
<blockquote>
<p>dp(i)=dp(i-1)+dp(i-2)+dp(i-3)</p>
</blockquote>
<p>이라는 점화식이 세워집니다.</p>
<p>이를 코딩에 적용하면 
문제 요구사항 코딩
<img src="https://velog.velcdn.com/images/jb_story/post/bb08e70d-b65f-4304-92e1-6e3566b88bff/image.png" alt="">
점화식 함수 코딩
<img src="https://velog.velcdn.com/images/jb_story/post/9761702c-8e4c-476e-92d2-dce8b30680c5/image.png" alt=""></p>
<p>으로 해결 할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 1463번 1로 만들기]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-1463%EB%B2%88-1%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-1463%EB%B2%88-1%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Sun, 11 Dec 2022 07:54:59 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/0aac89dd-442d-41d5-8f84-82f3178baf98/image.png" alt="">
설탕 배달과 비슷한 DP 문제이다.</p>
<p>이전에 포스팅 했듯이 DP 문제는 Top-Bottom 과 Bottom-Top 접근법이 있고 점화식을 세워 편한 방법을 택하는게 맞다.
주어진 점화식 조건으로는</p>
<blockquote>
<p>1)X를 3으로 나눈다
2)X를 2로 나눈다
3)1을 뺀다.</p>
</blockquote>
<p>위의 조건을 만족 시키면서 연산 횟수가 최소화가 되게 해야한다.</p>
<p>나는 Bottom-Top방식으로 Dp를 사용하였고 1부터 주어지는 숫자 X까지 1이 되는 최소 연산을 쌓았다.</p>
<blockquote>
<p>임의의 숫자 i의 최소 연산횟수는 </p>
</blockquote>
<p>1) i-1의 최소 연산횟수 +1 
2) 3으로 나뉠경우 i/3의 최소 연산횟수 +1 
3) 2로 나뉠경우 i/2의 최소 연산횟수 +1</p>
<p><img src="https://velog.velcdn.com/images/jb_story/post/b879a8ec-d3cc-47b1-8c32-5295ee2c31a4/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 2839번 설탕 배달]]></title>
            <link>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-2839%EB%B2%88-%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC</link>
            <guid>https://velog.io/@jb_story/%EB%B0%B1%EC%A4%80-2839%EB%B2%88-%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC</guid>
            <pubDate>Sun, 11 Dec 2022 07:41:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/jb_story/post/473ed100-f37f-49d5-ae68-3e5153243599/image.png" alt=""></p>
<p>쉬운 DP 문제이다.
DP 문제는 보통 Top-bottom 방식이나 Bottom-Top 방식으로 문제를 해결할 수 있다. 우선적으로 점화식을 세워 보면 상근이가 설탕을 포장할 수 있는 방법은 </p>
<blockquote>
<ol>
<li>5KG 봉지에 담는다.</li>
<li>3KG 봉지에 담는다.</li>
</ol>
</blockquote>
<p>하지만 상근이는 적은 봉지를 원하기 때문에 중요한건 5키로 봉지를 최대한 많이 사용하는 것 이다.
-&gt;5의 배수일때는 무조건 5로 나누고 그 전까지만 3키로씩 빼주면 된다.
-&gt;n에서 0이 될때까지 점화식 조건을 이용하여 Top-bottom 방식으로 DP를 짜면되겠다.
<img src="https://velog.velcdn.com/images/jb_story/post/b26a8c1b-da7e-4c7a-abd1-ef375f153a3f/image.png" alt="">
While 문을 통해</p>
<blockquote>
<p>1) 5의 배수만큼의 키로수가 남으면 5로 나눈 몫을 Count에 더해주고 출력 후Break(0인 경우도 여기서 출력 후 Break 됨)
2) n이 0보다 작아지면 -1을 출력하고 Break;(3을 빼다 0보다 작아진경우)
3) n에서 3만큼 빼고 Count 올려주기.</p>
</blockquote>
<p>위와 같이 2839 문제를 해결해 주었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[저에 관하여]]></title>
            <link>https://velog.io/@jb_story/%EC%A0%80%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC</link>
            <guid>https://velog.io/@jb_story/%EC%A0%80%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC</guid>
            <pubDate>Sat, 12 Nov 2022 08:37:25 GMT</pubDate>
            <description><![CDATA[<p>해당 블로그를 시작하며 저의 목표를 이루기까지의 배움과 실패를 적을 생각이며, 제가 겪었던 문제나 제가 얻게 될 지식을 조금이나마 정리하고자 합니다.</p>
<p>부족한 부분이 있을 수 있지만, 너그롭게 봐 주시고 오류나 수정사항 개선사항이 필요한 부분은 커멘트를 달아주세요.</p>
<p>감사합니다.</p>
]]></description>
        </item>
    </channel>
</rss>