<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>MoonBug</title>
    <link>https://moonbug4.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 16:48:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>J2on</managingEditor>
    <image>
      <title>MoonBug</title>
      <url>https://tistory1.daumcdn.net/tistory/3803180/attach/05b66464de274e1b8d31c47403e34319</url>
      <link>https://moonbug4.tistory.com</link>
    </image>
    <item>
      <title>[Level2.] 호텔 대실 C++</title>
      <link>https://moonbug4.tistory.com/167</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;&amp;lt; 문제 &amp;gt;&amp;gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/155651&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709296442569&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxNapi/hyVukuajp4/JOQuPLWT1Kvp5BBOlvPJG0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b7Twz5/hyVqhslSz9/fNP82nWar0sPKszHtmPpT1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxNapi/hyVukuajp4/JOQuPLWT1Kvp5BBOlvPJG0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b7Twz5/hyVqhslSz9/fNP82nWar0sPKszHtmPpT1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심적인 개념은 &quot;같은시간 내에 몇 개의 방을 사용하는가?&quot; 입니다.&lt;/p&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;저는 15:00 -&amp;gt; 900 이렇게 분 단위로 전환해서 입/퇴장 여부를 pair에 담고 vector로 묶어 정렬했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 map을 쓰면 되는거 아니냐 하실 수 있는데,,, map은 중복을 허용하지 않기 때문에 그렇습니다. &lt;br /&gt;&lt;br /&gt;multimap을 쓸 수도 있지만 그냥 vector를 활용하는게 더 직관적이라 그렇게 했습니다.&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;&amp;lt;&amp;lt; 코드 &amp;gt;&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1709296703510&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int solution(vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; book_time) {
    int answer = 0;
    
    vector&amp;lt;pair&amp;lt;int, string&amp;gt;&amp;gt; timeStamps;
    
    int min;
    for(auto&amp;amp; time : book_time){
        pair&amp;lt;int, string&amp;gt; timeStamp;
        for(int i=0; i&amp;lt;2; i++){
            min = 0;
            min += stoi(time[i].substr(0,2)) * 60;
            min += stoi(time[i].substr(3,2)); 
            
            if(i == 0){ // 입장시간
                timeStamp.first = min;
                timeStamp.second = &quot;입장&quot;;
            }
            else{
                timeStamp.first = min + 9; // 청소시간까지 고려
                timeStamp.second = &quot;퇴장&quot;; 
            }
            
            timeStamps.push_back(timeStamp);
        }
    }
    
    sort(timeStamps.begin(), timeStamps.end());
    
    int usingRoom = 0;
    for(auto&amp;amp; p : timeStamps){
        if(p.second == &quot;입장&quot;){
            usingRoom++;
        }
        else if(p.second == &quot;퇴장&quot;){
            usingRoom--;
        }
        
        if(usingRoom &amp;gt; answer){
            answer = usingRoom;
        }
    }
    
    return answer;
}&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;lt;&amp;lt; 깃허브 &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/155651.%E2%80%85%ED%98%B8%ED%85%94%E2%80%85%EB%8C%80%EC%8B%A4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/155651.%E2%80%85%ED%98%B8%ED%85%94%E2%80%85%EB%8C%80%EC%8B%A4&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>C++/Programmers</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/167</guid>
      <comments>https://moonbug4.tistory.com/167#entry167comment</comments>
      <pubDate>Fri, 1 Mar 2024 21:43:38 +0900</pubDate>
    </item>
    <item>
      <title>[Level2.] 튜플 C++</title>
      <link>https://moonbug4.tistory.com/166</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/64065&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708604647989&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cp1OdX/hyVmWBpuyf/DcUi4Xa4oyjmo0XXcgTBp1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cHQwud/hyVqiW79KY/Crkf2XskPa8Efu76bxF9J1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cp1OdX/hyVmWBpuyf/DcUi4Xa4oyjmo0XXcgTBp1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cHQwud/hyVqiW79KY/Crkf2XskPa8Efu76bxF9J1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 문제 보면서 의문이었던게&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;설명에서 어느 부분이 결과물의 순서를 명시하는거지????&quot;&lt;/p&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;해답은 많이 나온 요소의 순서대로 vector에 입력하는 것이었다.&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;lt;&amp;lt; 코드 &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708604739261&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;unordered_map&amp;gt;
#include &amp;lt;queue&amp;gt; 

using namespace std;

vector&amp;lt;int&amp;gt; solution(string s) {
    
    // map을 통해 어떤 숫자가 몇번 나왔는지를 기록
    unordered_map&amp;lt;int,int&amp;gt; um;
    
    string temp = &quot;&quot;;
    for(int i=0; i &amp;lt; s.size(); i++){
        if(s[i] == '{'){
            continue;
        }
        
        if(s[i] == ',' || s[i] == '}'){ // 쉼표나 괄호 닫기가 나온 경우 문자를 넣어줌
            if(temp.size() != 0){
                int num = stoi(temp);
                um[num] += 1;
                temp = &quot;&quot;;
            }
        }
        else{
            temp += s[i];
        }
    }
    
    priority_queue&amp;lt;pair&amp;lt;int,int&amp;gt;&amp;gt; pq;
    for(auto&amp;amp; n : um){
        pair&amp;lt;int,int&amp;gt; p(n.second, n.first);    
        pq.push(p);
    }
    
    vector&amp;lt;int&amp;gt; answer;
    while(!pq.empty()){
        pair&amp;lt;int,int&amp;gt; p = pq.top();
        answer.push_back(p.second);
        pq.pop();
    }
    
    return answer;
}&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;map에 &amp;lt;input, 등장횟수&amp;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;등장횟수에 따라 vector에 입력해주면 되기 때문에, &lt;br /&gt;pair를 역으로 &amp;lt;등장횟수, input&amp;gt;으로 작성해 pq에 넣어 순서대로 빼내어 vector에 넣는 방법을 사용했다.&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;lt;&amp;lt; 깃헙 &amp;gt;&amp;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://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/64065.%E2%80%85%ED%8A%9C%ED%94%8C&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/64065.%E2%80%85%ED%8A%9C%ED%94%8C&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>C++/Programmers</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/166</guid>
      <comments>https://moonbug4.tistory.com/166#entry166comment</comments>
      <pubDate>Thu, 22 Feb 2024 21:28:25 +0900</pubDate>
    </item>
    <item>
      <title>[Level2.] 숫자 변환하기 C++</title>
      <link>https://moonbug4.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;&amp;lt; 문제 &amp;gt;&amp;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://school.programmers.co.kr/learn/courses/30/lessons/154538&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/154538&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708263540209&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154538&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4hVx9/hyVjiE3q75/zX4DqvtTUZ7SBKtE1uYfdK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/q1iLo/hyVmSLtFje/bcEi43DkAkvGCpKWqq6eb1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154538&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154538&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4hVx9/hyVjiE3q75/zX4DqvtTUZ7SBKtE1uYfdK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/q1iLo/hyVmSLtFje/bcEi43DkAkvGCpKWqq6eb1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2배, 3배 +n&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이 세 가지 연산으로 x를 y로 변환하는 최소 횟수를 찾는 문제입니다.&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;주의해야 할 부분은 x -&amp;gt; y 보다 y -&amp;gt; x가 적은 경우를 계산한다는 것입니다.&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, 10이라면&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부터 시작하면 2, 3을 모두 곱하는 경우를 택하겠지만, 10부터 시작한다면 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;주요 과정은&lt;/p&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. y에서 /2 , /3 , -n 연산이 가능하다면 연산을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 연산 결과가 x와 일치한다면 끝내고, 아니라면 반복한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. q에 더 이상 수가 없다면 ( 3가지 연산이 불가능한 상태 == 즉, x로 y를 만들 수 없을 때) 1을 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어짜피 무슨 연산을 하든 상관이 없으니 같은 연산 횟수의 수끼리 한 q에 담기게 됩니다.&lt;/p&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 = 3&amp;nbsp; , y = 23 , n = 1 이라면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q = [23]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: =&amp;gt; q = [22]&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: =&amp;gt; q = [11, 21]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3: =&amp;gt; q = [10, 7, 20]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4: =&amp;gt; q = [5, 9, 6, 10, 19]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5: =&amp;gt; q = [4, 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;그러면 이렇게 5번째가 최소라는 것을 알 수 있습니다.&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;lt;&amp;lt; Code &amp;gt;&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708263962533&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;queue&amp;gt;

using namespace std;

int solution(int x, int y, int n) {
    int answer = 0;

    if(x == y){
        return 0;
    }
    
    queue&amp;lt;int&amp;gt; q;
    q.push(y);
    
    int qSize;
    int head;
    int num;
    bool isOver = false;
    
    while(!isOver &amp;amp;&amp;amp; !q.empty()){
        qSize = q.size(); 
        for(int i = 0; i &amp;lt; qSize; i++){
            head = q.front();
            if(head % 2 == 0){
                num = head / 2;
                if(num == x) { 
                    isOver = true; 
                    break;
                }
                q.push(num);
            }
            
            if(head % 3 == 0){
                num = head / 3;
                if(num == x) { 
                    isOver = true; 
                    break;
                }
                q.push(num);
            }
            
            if(head &amp;gt;= n){
                num = head - n;
                if(num == x) { 
                    isOver = true; 
                    break;
                }
                q.push(num);
            }
            q.pop();
        }
        answer++;
    }
    
    if(!isOver){
        answer = -1;
    }
    
    return answer;
}&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;lt;&amp;lt; GitHub &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/J2on/StudyAlgorithm_Part2/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/154538.%E2%80%85%EC%88%AB%EC%9E%90%E2%80%85%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0/%EC%88%AB%EC%9E%90%E2%80%85%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0.cpp&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/J2on/StudyAlgorithm_Part2/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/154538.%E2%80%85%EC%88%AB%EC%9E%90%E2%80%85%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0/%EC%88%AB%EC%9E%90%E2%80%85%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0.cpp&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>C++/Programmers</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/165</guid>
      <comments>https://moonbug4.tistory.com/165#entry165comment</comments>
      <pubDate>Sun, 18 Feb 2024 22:54:09 +0900</pubDate>
    </item>
    <item>
      <title>[Level1.] 예산 C++</title>
      <link>https://moonbug4.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;&amp;lt; 문제 &amp;gt;&amp;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;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12982&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12982&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707995443942&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12982&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxrIda/hyVjlgZxZY/hQUmTlBz10IJBCSJrmxsmK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/HaaB6/hyVm2myems/oz3W8QKYaLQkPgjJ8aJVn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12982&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12982&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxrIda/hyVjlgZxZY/hQUmTlBz10IJBCSJrmxsmK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/HaaB6/hyVm2myems/oz3W8QKYaLQkPgjJ8aJVn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;&amp;lt; 코드 &amp;gt;&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1707995458785&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;stdio.h&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int solution(vector&amp;lt;int&amp;gt; d, int budget) {
     int answer = 0;
    sort(d.begin(), d.end());
    
    for(auto&amp;amp; a : d){
        budget -= a;
        if(budget &amp;gt;= 0 ){
            answer++;
        }
    }
    
   
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크게 생각할 부분이 없는 것이...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많은 부서에 물품을 제공하기 위해선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 적은 돈을 필요로 하는 부서의 물건부터 구매해 주면 됩니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;&amp;lt; GitHub &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/12982.%E2%80%85%EC%98%88%EC%82%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/12982.%E2%80%85%EC%98%88%EC%82%B0&lt;/a&gt;&lt;/p&gt;</description>
      <category>C++/Programmers</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/164</guid>
      <comments>https://moonbug4.tistory.com/164#entry164comment</comments>
      <pubDate>Thu, 15 Feb 2024 20:13:29 +0900</pubDate>
    </item>
    <item>
      <title>메모리 파편화 (Memory Fragmentation)와 Virtual Memory</title>
      <link>https://moonbug4.tistory.com/162</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 파편화 (Memory Fragmation)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9XiIg/btsEFS9QhkU/DwhP96f8WkPCCMbPlCsEI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9XiIg/btsEFS9QhkU/DwhP96f8WkPCCMbPlCsEI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9XiIg/btsEFS9QhkU/DwhP96f8WkPCCMbPlCsEI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9XiIg%2FbtsEFS9QhkU%2FDwhP96f8WkPCCMbPlCsEI1%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;1700&quot; height=&quot;818&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;External Fragmentation&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwGZN7/btsEINsZ6rt/FMJjHnQ75gZ95YkQ56MdP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwGZN7/btsEINsZ6rt/FMJjHnQ75gZ95YkQ56MdP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwGZN7/btsEINsZ6rt/FMJjHnQ75gZ95YkQ56MdP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwGZN7%2FbtsEINsZ6rt%2FFMJjHnQ75gZ95YkQ56MdP0%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;1700&quot; height=&quot;1374&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Internal Fragmentation&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Allocated된 memory가 필요보다 &lt;b&gt;조금 더 할당 되어서 남은 공간&lt;/b&gt;이 비어있는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;External Fragmentation&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Memory 내부에 Process들 사이에 빈 메모리 공간&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 해결하기 위해 Paging을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Memory는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 memory의 Physical Memory Address &amp;rarr; MMU &amp;rarr; Logical Memory Address&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;그래서 Process가 활용하는 것은 &lt;b&gt;Logical Memory Address&lt;/b&gt;인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Physical Memory를 fixed size한 block으로 나눈 것을 &amp;lsquo;&lt;b&gt;frame&lt;/b&gt;&amp;rsquo;이라 하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 크기의 Logical Memory를 &amp;lsquo;&lt;b&gt;Page&lt;/b&gt;&amp;rsquo;라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이러한 Page를 각 프로세스마다 PageTable(MMU의 역할)로 묶는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rArr; 그러면 &lt;b&gt;프로세스 입장에선 연속된 memory공간처럼 활용이 가능하다&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;이런 Page Table 구성에는 Hashing이나 Inverted나 계층구조나 여러 방식이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.notion.so/9-Main-Memory-91663c87c4ee4a51b0ba7daeedfc94c2?pvs=21&quot;&gt;9. Main Memory&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;Paging에서 항목이 많아지는 경우엔 2중 3중으로 Paging하고 하는거지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 Page Table을 이용하는 방식이 &lt;b&gt;Virtual Memory&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;이런 Virtual Memory는 또, ROM을 이용해 실제 메모리보다 더 큰 메모리를 사용할 수 있게 해준다.&lt;/p&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;hellip;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 Memory에 올라있지 않고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크에 backing store라고 하는 곳에 잘 안쓰는 데이터들을 저장해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 이 backing store에 저장된 정보가 필요한 경우엔 어떻게 해야할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(혹은 새 Data로 인해 빈공간이 필요한 경우)&lt;/p&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;Page Fault&lt;/b&gt;라고 한다. Page Table에서 찾을 수 없다는 뜻.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, backing store에 있는 정보와 &lt;b&gt;Swapping&lt;/b&gt;을 통해 &lt;b&gt;memory에 있는 정보와 교환&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;그래서 **어떤 Page를 Victim(희생자)**로 선정하는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 알고리즘이 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;FIFO(First in First out) - 가장 먼저 들어온 순으로 교체&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Optimal Page Replacement&lt;/b&gt; - 앞으로 가장 나중에 사용될 page 교체&lt;/li&gt;
&lt;li&gt;(앞으로의 Process 진행을 알고 있어야 함 &amp;larr; 현실성 부족)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LRU(Least Recently Used)&lt;/b&gt; - 가장 오래 전에 접근 되었던 page 교체&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.notion.so/10-Virtual-Memory-addb1c7bf1544944a2fb6f2df1715e5a?pvs=21&quot;&gt;10. Virtual Memory&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은 위로&amp;hellip;&lt;/p&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://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707498066526&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Difference between Internal and External fragmentation - GeeksforGeeks&quot; data-og-description=&quot;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&quot; data-og-host=&quot;www.geeksforgeeks.org&quot; data-og-source-url=&quot;https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&quot; data-og-url=&quot;https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4T1Cu/hyVjndtLAQ/XL7S2GSksaeZyiZ4uXYL10/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/jEQyh/hyVf6LbKfd/PA0hoBzsM6fzWDNkqZc2OK/img.png?width=391&amp;amp;height=316&amp;amp;face=0_0_391_316,https://scrap.kakaocdn.net/dn/c4dedg/hyVf9nDi7U/kQccDIwxDdFKZVGJUitt2K/img.png?width=613&amp;amp;height=295&amp;amp;face=0_0_613_295&quot;&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4T1Cu/hyVjndtLAQ/XL7S2GSksaeZyiZ4uXYL10/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/jEQyh/hyVf6LbKfd/PA0hoBzsM6fzWDNkqZc2OK/img.png?width=391&amp;amp;height=316&amp;amp;face=0_0_391_316,https://scrap.kakaocdn.net/dn/c4dedg/hyVf9nDi7U/kQccDIwxDdFKZVGJUitt2K/img.png?width=613&amp;amp;height=295&amp;amp;face=0_0_613_295');&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;Difference between Internal and External fragmentation - GeeksforGeeks&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.geeksforgeeks.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/OS</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/162</guid>
      <comments>https://moonbug4.tistory.com/162#entry162comment</comments>
      <pubDate>Sat, 10 Feb 2024 02:01:13 +0900</pubDate>
    </item>
    <item>
      <title>Von Neumann Architecture</title>
      <link>https://moonbug4.tistory.com/161</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;1700&quot; data-origin-height=&quot;983&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G45c5/btsED8MSLj5/I7rV7kYxuSYiGg1GgP5xnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G45c5/btsED8MSLj5/I7rV7kYxuSYiGg1GgP5xnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G45c5/btsED8MSLj5/I7rV7kYxuSYiGg1GgP5xnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG45c5%2FbtsED8MSLj5%2FI7rV7kYxuSYiGg1GgP5xnk%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;1700&quot; height=&quot;983&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;983&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;a href=&quot;https://ko.wikipedia.org/wiki/폰_노이만_구조&quot;&gt;https://ko.wikipedia.org/wiki/폰_노이만_구조&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 Modern Computer Architecture는 폰 노이만 구조를 따르고 있다.&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;background-color: #f6e199;&quot;&gt;&amp;ldquo;&lt;b&gt;CPU가 Main Memory에 올려진 Data와 이를 이용한 instruction(interrupt)을 받아 Process를 처리하는 구조&lt;/b&gt;&amp;rdquo;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 CPU는 Control Unit과 Logic Unit으로 나뉘는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Control Unit은 CPU에서 실행순서와 interrupt에 대한 연산을 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Logic Unit은 산술 연산과 논리 연산을 담당&lt;/p&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>Study/OS</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/161</guid>
      <comments>https://moonbug4.tistory.com/161#entry161comment</comments>
      <pubDate>Sat, 10 Feb 2024 00:48:51 +0900</pubDate>
    </item>
    <item>
      <title> Quad Tree &amp;amp; Loose Quad Tree&amp;amp; Octree</title>
      <link>https://moonbug4.tistory.com/160</link>
      <description>&lt;h1&gt;Quad Tree&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Binary Tree가 Node가 두 개인 트리구조인 것처럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Quad Tree는 Node가 네 개인 트리구조를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용처&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대량의 좌표 데이터를 압축 저장&lt;/li&gt;
&lt;li&gt;보통 흑백 이미지 표현에 많이 사용&lt;/li&gt;
&lt;li&gt;게임에서는 지형정보를 저장하기 위해 많이 사용한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거대한 지형을 탐색할 때, 필요 없는 정보를 버릴 수 있다&lt;/li&gt;
&lt;li&gt;Procedural Grneration에서 QuadTree를 이용해 생성&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRZN4a/btsEHqLy91H/VfhyYOoa1RZjkKj8UZGN30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRZN4a/btsEHqLy91H/VfhyYOoa1RZjkKj8UZGN30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRZN4a/btsEHqLy91H/VfhyYOoa1RZjkKj8UZGN30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRZN4a%2FbtsEHqLy91H%2FVfhyYOoa1RZjkKj8UZGN30%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;545&quot; height=&quot;336&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Collision Check 시에 사용&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csfcnG/btsEHn889ag/EgDGdcY9nQYvYgbhigMmRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csfcnG/btsEHn889ag/EgDGdcY9nQYvYgbhigMmRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csfcnG/btsEHn889ag/EgDGdcY9nQYvYgbhigMmRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsfcnG%2FbtsEHn889ag%2FEgDGdcY9nQYvYgbhigMmRk%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;441&quot; height=&quot;397&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1532&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; 어느 Box에 Collision이 생겼는지 탐색하는 경우에 사용할 수 있을 듯하다.&lt;/p&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;h1&gt;Loose Quad Tree&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Loose Quad Tree 알고리즘은 &lt;b&gt;기존 Quad Tree 알고리즘의 문제점을 보완&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;b&gt;Quad Tree 알고리즘의 문제점&lt;/b&gt;?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Quad Tree는 크기를 엄격하게 4개로 분할한다.&lt;/li&gt;
&lt;li&gt;이렇다 보니 &lt;b&gt;한 개의 영역 Data가 몰리는 경우&lt;/b&gt;에 비효율적
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;불필요하게 많은 Node&lt;/b&gt;를 생성하고 &lt;b&gt;메모리를 낭비&lt;/b&gt;할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그러니 검색속도가 느려질 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rArr; 그래서 Loose Quad Tree는 각 영역을 Loose하게 분할한다.&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;1700&quot; data-origin-height=&quot;1321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDsepZ/btsEFNHwmkH/U1ZgxRns7XrhXE7mgO5ZKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDsepZ/btsEFNHwmkH/U1ZgxRns7XrhXE7mgO5ZKk/img.png&quot; data-alt=&quot;https://community.cesium.com/t/announcing-cesium-osm-buildings/9757&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDsepZ/btsEFNHwmkH/U1ZgxRns7XrhXE7mgO5ZKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDsepZ%2FbtsEFNHwmkH%2FU1ZgxRns7XrhXE7mgO5ZKk%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;406&quot; height=&quot;315&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;1321&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://community.cesium.com/t/announcing-cesium-osm-buildings/9757&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 형식으로 엄격하게 분할하지 않는 QuadTree를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Octree&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;976&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C1Tv7/btsEExyT7C5/poyQDOtVaGJb3cvnMfDDvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C1Tv7/btsEExyT7C5/poyQDOtVaGJb3cvnMfDDvk/img.png&quot; data-alt=&quot;Wiki-Octree https://www.google.com/url?sa=i&amp;amp;amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOctree&amp;amp;amp;psig=AOvVaw1o7-kigjRb314zK7vxN40w&amp;amp;amp;ust=1707576077731000&amp;amp;amp;source=images&amp;amp;amp;cd=vfe&amp;amp;amp;opi=89978449&amp;amp;amp;ved=0CBQQjhxqFwoTCJD1n9--noQDFQAAAAAdAAAAABAD'&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C1Tv7/btsEExyT7C5/poyQDOtVaGJb3cvnMfDDvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC1Tv7%2FbtsEExyT7C5%2FpoyQDOtVaGJb3cvnMfDDvk%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;573&quot; height=&quot;329&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;976&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Wiki-Octree https://www.google.com/url?sa=i&amp;amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOctree&amp;amp;psig=AOvVaw1o7-kigjRb314zK7vxN40w&amp;amp;ust=1707576077731000&amp;amp;source=images&amp;amp;cd=vfe&amp;amp;opi=89978449&amp;amp;ved=0CBQQjhxqFwoTCJD1n9--noQDFQAAAAAdAAAAABAD'&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Octree는 QuadTree의 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;8개의 자식노드를 가지는 트리구조이다.&lt;/p&gt;</description>
      <category>Study/Algorithm</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/160</guid>
      <comments>https://moonbug4.tistory.com/160#entry160comment</comments>
      <pubDate>Sat, 10 Feb 2024 00:22:06 +0900</pubDate>
    </item>
    <item>
      <title>Deque(및 Queue, stack)의 메모리 관점에서 구현 방식</title>
      <link>https://moonbug4.tistory.com/151</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;dequeue&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;deque는 양 쪽에서 push와 pull이 가능한 자료구조&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;list는 linked list형태로 제작되었고, vector는 연속된 메모리 공간에 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 deque는?&lt;/p&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;rarr; 둘 다 &lt;b&gt;좀 다름&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;987&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv7zzX/btsEBZULGLL/bfctxjuOHeZXaFnYtxvB41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv7zzX/btsEBZULGLL/bfctxjuOHeZXaFnYtxvB41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv7zzX/btsEBZULGLL/bfctxjuOHeZXaFnYtxvB41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv7zzX%2FbtsEBZULGLL%2FbfctxjuOHeZXaFnYtxvB41%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;1700&quot; height=&quot;987&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;987&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;deque의 경우 각 &lt;b&gt;object를 가리키는 pointer들의 연속된 집합&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;b&gt;value 값은 다른 공간에 저장&lt;/b&gt;을 해두고, &lt;b&gt;그 공간을 가리키는 pointer&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;장점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Random Access도 가능함&lt;/li&gt;
&lt;li&gt;연속적인 공간의 크기가 작아도 됨
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Pointer의 작은 크기&lt;/b&gt; 덕에 다른 자료형을 연속적으로 저장하는 것보다 작음&lt;/li&gt;
&lt;li&gt;vector는 크기가 커질 때, 다른 공간에 복사하는 작업이 필요 &amp;rarr; deque는 이런 작업이 적게 일어남.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Random Access시에 한 단계 더 거치기에 vector보다 약간 더 느릴 것 (아주 약간)&lt;/li&gt;
&lt;/ul&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; &amp;nbsp;다만, vector와 비교했으나 두 자료구조의 사용법과 상황이 다르므로 직접적으로 뭐가 더 좋다는 뜻은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Queue &amp;amp; Stack&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;queue는 deque나 list를 기반으로 구현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stack도 deque나 vector를 활용해서 구현&lt;/p&gt;</description>
      <category>C++/개념공부</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/151</guid>
      <comments>https://moonbug4.tistory.com/151#entry151comment</comments>
      <pubDate>Wed, 7 Feb 2024 19:31:40 +0900</pubDate>
    </item>
    <item>
      <title>C++ Smart Pointer에 대하여</title>
      <link>https://moonbug4.tistory.com/149</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;C++의 큰 특징 중 하나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pointer를 이용한 직접적인 메모리 관리가 가능하다.&lt;/p&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;이를 위해 Smart Pointer를 사용한다.&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;Smart Pointer는 일반 Pointer를 wrapping하는 형태로 구성된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Smart Pointer의 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. unique_ptr (Unique Pointer)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떠한 &lt;b&gt;object가 오직 한 개의 참조만이 가능&lt;/b&gt;할 때, 새로운 참조가 생기면 &lt;b&gt;기존 pointing을 끊어버리는 것.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;memory&amp;gt;
#include &amp;lt;iostream&amp;gt;

class MyClass {
public:
    MyClass() {
        std::cout &amp;lt;&amp;lt; &quot;MyClass 생성자 호출\\n&quot;;
    }

    ~MyClass() {
        std::cout &amp;lt;&amp;lt; &quot;MyClass 소멸자 호출\\n&quot;;
    }

    void doSomething() {
        std::cout &amp;lt;&amp;lt; &quot;뭔가를 수행 중...\\n&quot;;
    }
};

int main() {
    // std::unique_ptr을 사용하여 동적으로 할당된 객체를 관리
    std::unique_ptr&amp;lt;MyClass&amp;gt; uniquePtr = std::make_unique&amp;lt;MyClass&amp;gt;();

    // 객체에 접근
    uniquePtr-&amp;gt;doSomething();

    // 메모리는 자동으로 관리되므로 따로 delete할 필요 없음

    return 0; // uniquePtr가 범위를 벗어나면 MyClass는 자동으로 삭제됨
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2, shared_ptr (Shared Pointer)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;object가 &lt;b&gt;몇 개의 pointer에 의해 pointing&lt;/b&gt; 되고 있는지 알려준다.&lt;/li&gt;
&lt;li&gt;참조되는 (pointing)의 수가 &lt;b&gt;&lt;b&gt;0이 되면 해당 object를 지워버림&lt;/b&gt;&lt;/b&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;memory&amp;gt;
#include &amp;lt;iostream&amp;gt;
class MyClass {
public:
    MyClass() {
        std::cout &amp;lt;&amp;lt; &quot;MyClass 생성자 호출\\n&quot;;
    }

    ~MyClass() {
        std::cout &amp;lt;&amp;lt; &quot;MyClass 소멸자 호출\\n&quot;;
    }

    void doSomething() {
        std::cout &amp;lt;&amp;lt; &quot;뭔가를 수행 중...\\n&quot;;
    }
};

int main() {
    // std::shared_ptr을 사용하여 여러 곳에서 동적으로 할당된 객체를 공유
    std::shared_ptr&amp;lt;MyClass&amp;gt; sharedPtr1 = std::make_shared&amp;lt;MyClass&amp;gt;();
    std::shared_ptr&amp;lt;MyClass&amp;gt; sharedPtr2 = sharedPtr1; // 참조 계수가 증가

    // 객체에 접근
    sharedPtr1-&amp;gt;doSomething();
    sharedPtr2-&amp;gt;doSomething();

    // 메모리는 참조 계수에 따라 자동으로 관리됨

    return 0; // sharedPtr1과 sharedPtr2가 범위를 벗어나면 MyClass는 자동으로 삭제됨
}

&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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. weak_ptr (Weak Pointer)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;shared pointer를 이용할 때 두 object가 서로를 참조하고 있으면, shared pointer에서는 영원히 지워지지 않음.&lt;/li&gt;
&lt;li&gt;이런 경우를 &lt;b&gt;Cyclic reference&lt;/b&gt;라고 하고 이걸 방지하기 위해 대신 사용하는 것이 Weak Pointer.&lt;/li&gt;
&lt;li&gt;객체를 소유하지 않는 약한 참조이기 떄문에 객체에 안전하게 접근함&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>C++/개념공부</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/149</guid>
      <comments>https://moonbug4.tistory.com/149#entry149comment</comments>
      <pubDate>Wed, 7 Feb 2024 18:17:21 +0900</pubDate>
    </item>
    <item>
      <title>C++ Lvalue와 Rvalue</title>
      <link>https://moonbug4.tistory.com/148</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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lvalue와 rvalue를 이해하기 전에 먼저 glvalue와 prvalue, xvalue에 대해 알아야 한다.&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;275&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/50aIf/btsEvYjjRJJ/4lK9t1BbgMXiB0YQywefL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/50aIf/btsEvYjjRJJ/4lK9t1BbgMXiB0YQywefL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/50aIf/btsEvYjjRJJ/4lK9t1BbgMXiB0YQywefL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F50aIf%2FbtsEvYjjRJJ%2F4lK9t1BbgMXiB0YQywefL1%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;275&quot; height=&quot;135&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;135&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;b&gt;glvalue (Generalized Lvalue)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #171717; color: #e6e6e6; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;glvalue는 평가에서 개체, 비트 필드 또는 함수의 ID를 결정하는 식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라는 microsoft의 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 glvalue는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;메모리 주소를 나타내는 표현식&lt;/b&gt;&lt;/span&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;그리고 glvalue에는 &lt;b&gt;lvalue&lt;/b&gt;와 &lt;b&gt;xvalue&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;prvalue (Pure Rvalue)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;prvalue는 연산자의 피연산산자 값을 계산하는 식, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;주로 함수 호출 반환 값 or 상수&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1707293646164&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = 3 &amp;lt;- 3은 prvalue&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;우리가 일반적으로 사용하는 rvalue값이다.&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;자 다시 lvalue와 rvalue로 돌아가서&lt;/p&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;왼쪽(lvalue)에는 값을 저장할 변수명을, 오른쪽(rvalue)에는 값이나 혹은 메모리 주소를 넣는다.&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;lvalue에 주소가 할당되지 않은 상수 같은 값을 넣을 수 있는가?&lt;/p&gt;
&lt;pre id=&quot;code_1707293932318&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;3 = &amp;amp;a;&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;&lt;b&gt;결국 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lvalue -&amp;gt; 주소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rvalue -&amp;gt; 값 &amp;amp; 주소&lt;/p&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;span style=&quot;background-color: #f6e199;&quot;&gt;주소는 glvalue&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;함&lt;/span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;수의 결과나 상수는 prvalue(순수 rvalue)&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;lvalue -&amp;gt; 주소&amp;nbsp; (glvaue 중 lvalue)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rvalue -&amp;gt; 값 &amp;amp; 주소&amp;nbsp; &amp;nbsp;(prvalue와 glvalue 중 xvalue)&lt;/p&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm0z8i/btsEy1e4zY4/Vpzy7wxKav6fsREpwxfmLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm0z8i/btsEy1e4zY4/Vpzy7wxKav6fsREpwxfmLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm0z8i/btsEy1e4zY4/Vpzy7wxKav6fsREpwxfmLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm0z8i%2FbtsEy1e4zY4%2FVpzy7wxKav6fsREpwxfmLk%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;275&quot; height=&quot;135&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;135&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;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707293491158&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;값 범주: Lvalues 및 Rvalues(C++)&quot; data-og-description=&quot;자세한 정보: Lvalues 및 Rvalues(C++)&quot; data-og-host=&quot;learn.microsoft.com&quot; data-og-source-url=&quot;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&quot; data-og-url=&quot;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/szVfR/hyVjadNpPZ/TL06US6BvoM3ZrSWypC5mK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learn.microsoft.com/ko-kr/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/szVfR/hyVjadNpPZ/TL06US6BvoM3ZrSWypC5mK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;값 범주: Lvalues 및 Rvalues(C++)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;자세한 정보: Lvalues 및 Rvalues(C++)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learn.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>C++/개념공부</category>
      <author>J2on</author>
      <guid isPermaLink="true">https://moonbug4.tistory.com/148</guid>
      <comments>https://moonbug4.tistory.com/148#entry148comment</comments>
      <pubDate>Wed, 7 Feb 2024 17:25:43 +0900</pubDate>
    </item>
  </channel>
</rss>