<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>로봇이 만드는 눈사람</title>
    <link>https://pro-train.tistory.com/</link>
    <description>IT를 중심으로 다양한 것</description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 12:54:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Hun-bot</managingEditor>
    <image>
      <title>로봇이 만드는 눈사람</title>
      <url>https://tistory1.daumcdn.net/tistory/4893869/attach/cec29586cbd64bcd80946c5a85a006a7</url>
      <link>https://pro-train.tistory.com</link>
    </image>
    <item>
      <title>프로그래머스 상품 별 오프라인 매출 구하기[lv.2]</title>
      <link>https://pro-train.tistory.com/188</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131533&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/131533&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  같은 제품의 코드끼리 묶기&lt;br /&gt;  총 판매 개수에 가격 곱하기&lt;br /&gt;  JOIN ON 구문 사용하기 (WHERE 구문도 상관 없음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  문제에서 요구하는 정렬조건 따라가기&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;-- 코드를 입력하세요
SELECT P.PRODUCT_CODE, (P.PRICE * SUM(S.SALES_AMOUNT)) AS SALES 
FROM PRODUCT P 
JOIN OFFLINE_SALE S ON P.PRODUCT_ID = S.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE;

-- 코드를 입력하세요
SELECT P.PRODUCT_CODE, (P.PRICE * SUM(S.SALES_AMOUNT)) AS SALES 
FROM PRODUCT P , OFFLINE_SALE S
WHERE P.PRODUCT_ID = S.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE;
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programmers/SQL</category>
      <category>Programmers</category>
      <category>SQL</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/188</guid>
      <comments>https://pro-train.tistory.com/188#entry188comment</comments>
      <pubDate>Thu, 27 Mar 2025 15:51:02 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 6550.ALL IN ALL(부분 문자열) c++ [Silver V]</title>
      <link>https://pro-train.tistory.com/187</link>
      <description>&lt;div class=&quot;index_toc&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Contents&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력은 여러 개의 테스트 케이스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s,t 10만을 넘지 않음 -&amp;gt; O(n)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자 하나씩 비교하면서 s가 완성되면 &quot;Yes&quot; 완성되지 못하면 &quot;No&quot;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드&lt;/h3&gt;
&lt;pre id=&quot;code_1740022142812&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;string&amp;gt;
using namespace std;

string is_subsequence(const string &amp;amp;s, const string &amp;amp;t)
{
    int s_idx = 0, t_idx = 0;

    while (s_idx &amp;lt; s.length() &amp;amp;&amp;amp; t_idx &amp;lt; t.length())
    {
        if (s[s_idx] == t[t_idx])
        {
            s_idx++;
        }
        t_idx++;
    }

    if (s_idx == s.length())
    {
        return &quot;Yes&quot;;
    }
    else
    {
        return &quot;No&quot;;
    }
}

int main()
{
    string s, t;

    while (cin &amp;gt;&amp;gt; s &amp;gt;&amp;gt; t)
    {
        cout &amp;lt;&amp;lt; is_subsequence(s, t) &amp;lt;&amp;lt; endl;
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/187</guid>
      <comments>https://pro-train.tistory.com/187#entry187comment</comments>
      <pubDate>Thu, 20 Feb 2025 12:32:08 +0900</pubDate>
    </item>
    <item>
      <title>SQL 고득점 Kit - SELECT</title>
      <link>https://pro-train.tistory.com/185</link>
      <description>&lt;div class=&quot;index_toc&quot;&gt;
&lt;div class=&quot;index_toc&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Contents&lt;/p&gt;
&lt;ol id=&quot;toc&quot; style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;&lt;/ol&gt;
&lt;/div&gt;
&lt;ol id=&quot;toc&quot; style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;&lt;/ol&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3월에 태어난 여성 회원 목록 출력하기&lt;/h2&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT MEMBER_ID, MEMBER_NAME, GENDER, 
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE 
WHERE GENDER = 'W' 
AND DATE_OF_BIRTH LIKE '%-03-%'
AND TLNO IS NOT NULL
ORDER BY MEMBER_ID ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;서울에 위치한 식당 목록 출력하기&lt;/h2&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT 
    R.REST_ID, R.REST_NAME, R.FOOD_TYPE, R.FAVORITES, R.ADDRESS, ROUND(AVG(RV.REVIEW_SCORE), 2) AS SCORE
FROM 
    REST_INFO R
JOIN 
    REST_REVIEW RV ON (R.REST_ID = RV.REST_ID)
WHERE 
    R.ADDRESS LIKE '서울%'
GROUP BY 
    R.REST_ID, R.REST_NAME, R.FOOD_TYPE, R.FAVORITES, R.ADDRESS
ORDER BY 
    SCORE DESC, R.FAVORITES DESC;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※주의사항 : '%서울%' -&amp;gt; 틀림[서울을 포함한 다른 지명이나 빌딩 이름이 있을 가능성] '서울%': 서울로 시작해야함(서울에 위치한 식당)&lt;/p&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;</description>
      <category>Programmers/SQL</category>
      <category>SELECT</category>
      <category>SQL</category>
      <category>고득점 Kit</category>
      <category>프로그래머스</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/185</guid>
      <comments>https://pro-train.tistory.com/185#entry185comment</comments>
      <pubDate>Wed, 19 Feb 2025 16:08:06 +0900</pubDate>
    </item>
    <item>
      <title>대소문자 바꿔서 출력하기 c++ [LV.0]</title>
      <link>https://pro-train.tistory.com/184</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;ASCII 코드에서 대문자와 소문자의 차이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어 알파벳은 &lt;b&gt;ASCII 코드&lt;/b&gt;에서 대소문자가 일정한 차이를 가지고 있다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;문자&lt;/th&gt;
&lt;th&gt;ASCII 코드(10진수)&lt;/th&gt;
&lt;th&gt;ASCII 코드(2진수)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;'A'&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01000001&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'a'&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01100001&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'B'&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01000010&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'b'&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01100010&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Z'&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01011010&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'z'&lt;/td&gt;
&lt;td&gt;122&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01111010&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;대소문자의 차이: 6번째 비트(0x20, 32)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소문자의 ASCII 값은 대문자의 ASCII 값보다 &lt;b&gt;항상 &amp;gt;32&lt;/b&gt;.&lt;br /&gt;'a' (97) - 'A' (65) = 32&lt;br /&gt;'b' (98) - 'B' (66) = 32&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이진수에서는 &lt;b&gt;6번째 비트를 XOR연산을 사용해 반전&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;XOR 연산 (&lt;code&gt;c ^= 32&lt;/code&gt;) 코드&lt;/h2&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;

using namespace std;
string swap(string s){
    for(char &amp;amp;c :s) c ^=32;
    return s;
}

int main(void) {
    string str;
    cin &amp;gt;&amp;gt; str;
    cout &amp;lt;&amp;lt; swap(str);
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programmers/TIP</category>
      <category>c++</category>
      <category>XOR</category>
      <category>대소문자</category>
      <category>프로그래머스</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/184</guid>
      <comments>https://pro-train.tistory.com/184#entry184comment</comments>
      <pubDate>Sat, 15 Feb 2025 18:32:22 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 2805.EKO(나무자르기) c++ [Silver II]</title>
      <link>https://pro-train.tistory.com/183</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;이분탐색&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정렬된 범위에 특정 값을 찾거나 최적의 값을 구할 때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;left =0, right는 max로 설정 mid값을 잡아서 조건에 만족하는 최댓 값을 찾을 때까지 위해 반복&lt;/p&gt;
&lt;pre id=&quot;code_1738679455535&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;algorithm&amp;gt;
using namespace std;

typedef long long ll;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N, M;
    cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
    vector&amp;lt;int&amp;gt; trees(N);
    for (int i = 0; i &amp;lt; N; i++)
    {
        cin &amp;gt;&amp;gt; trees[i];
    }
    int left = 0, right = *max_element(trees.begin(), trees.end()), sum = 0;
    while (left &amp;lt;= right)
    {
        int mid = (left + right) / 2;
        ll total = 0;
        for (int t : trees)
        {
            if (t &amp;gt; mid)
            {
                total += t - mid;
            }
        }
        if (total &amp;gt;= M)
        {
            sum = mid;
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }
    cout &amp;lt;&amp;lt; sum;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/183</guid>
      <comments>https://pro-train.tistory.com/183#entry183comment</comments>
      <pubDate>Tue, 4 Feb 2025 23:40:17 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 2003.수들의 합2 c++ [Silver IV]</title>
      <link>https://pro-train.tistory.com/182</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Two pointer 기법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽으로 이동하면서 값을 더해 sum==M일 때 count를 올려주고, 해당 값이 M을 넘었을 때, left의 위치와 비교해서 지금까지 더해온 값을 모두 빼주며 sum을 초기화한다&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N, M;
    cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
    vector&amp;lt;int&amp;gt; A(N);
    for (int i = 0; i &amp;lt; N; i++)
    {
        cin &amp;gt;&amp;gt; A[i];
    }
    int left = 0, right = 0, sum = 0, count = 0;
    while (right &amp;lt; N)
    {
        sum += A[right];
        right++;
        while (sum &amp;gt; M &amp;amp;&amp;amp; left &amp;lt; right)
        {
            sum -= A[left];
            left++;
        }
        if (sum == M)
        {
            count++;
        }
    }
    cout &amp;lt;&amp;lt; count;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/182</guid>
      <comments>https://pro-train.tistory.com/182#entry182comment</comments>
      <pubDate>Tue, 4 Feb 2025 23:09:30 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 15650.N과 M (2) c++ [Silver III]</title>
      <link>https://pro-train.tistory.com/181</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736389860729&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 check(int N, int M, int start, vector&amp;lt;int&amp;gt; &amp;amp;comb)
{
    if (comb.size() == M)
    {
        for (int c : comb)
            cout &amp;lt;&amp;lt; c &amp;lt;&amp;lt; &quot; &quot;;
        cout &amp;lt;&amp;lt; '\n';
        return;
    }
    for (int i = start; i &amp;lt;= N; i++)
    {
        comb.push_back(i);
        check(N, M, i + 1, comb);
        comb.pop_back();
    }
}

int main()
{
    int N, M;

    cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;

    vector&amp;lt;int&amp;gt; combination;
    check(N, M, 1, combination);
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;15652. N과 M(4)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 숫자부터 다시 시작하도록 i+1에서 i로 바꾸면 된다&lt;/p&gt;
&lt;pre id=&quot;code_1736389929717&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 check(int N, int M, int start, vector&amp;lt;int&amp;gt; &amp;amp;comb)
{
    if (comb.size() == M)
    {
        for (int c : comb)
            cout &amp;lt;&amp;lt; c &amp;lt;&amp;lt; &quot; &quot;;
        cout &amp;lt;&amp;lt; '\n';
        return;
    }
    for (int i = start; i &amp;lt;= N; i++)
    {
        comb.push_back(i);
        check(N, M, i, comb);
        comb.pop_back();
    }
}

int main()
{
    int N, M;

    cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;

    vector&amp;lt;int&amp;gt; combination;
    check(N, M, 1, combination);
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/181</guid>
      <comments>https://pro-train.tistory.com/181#entry181comment</comments>
      <pubDate>Thu, 9 Jan 2025 12:03:53 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 2775.부녀회장이 될테야 c++ [Bronze I]</title>
      <link>https://pro-train.tistory.com/180</link>
      <description>&lt;pre id=&quot;code_1736385572153&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;

int main()
{
    int T;
    cin &amp;gt;&amp;gt; T;

    while (T--)
    {
        int k, n;
        cin &amp;gt;&amp;gt; k &amp;gt;&amp;gt; n;

        vector&amp;lt;int&amp;gt; apart(n + 1, 0);

        for (int i = 1; i &amp;lt;= n; i++)
        {
            apart[i] = i;
        }

        for (int i = 1; i &amp;lt;= k; i++)
        {
            for (int j = 2; j &amp;lt;= n; j++)
            {
                apart[j] += apart[j - 1];
            }
        }

        cout &amp;lt;&amp;lt; apart[n] &amp;lt;&amp;lt; endl;
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Baekjoon/Bronze</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <category>부녀회장</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/180</guid>
      <comments>https://pro-train.tistory.com/180#entry180comment</comments>
      <pubDate>Thu, 9 Jan 2025 10:20:01 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 10845.큐 c++ [Silver IV]</title>
      <link>https://pro-train.tistory.com/179</link>
      <description>&lt;pre id=&quot;code_1735548612827&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;queue&amp;gt;
#include &amp;lt;string&amp;gt;
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N;
    cin &amp;gt;&amp;gt; N;
    queue&amp;lt;int&amp;gt; q;

    while (N--)
    {
        string command;
        cin &amp;gt;&amp;gt; command;

        if (command == &quot;push&quot;)
        {
            int x;
            cin &amp;gt;&amp;gt; x;
            q.push(x);
        }
        else if (command == &quot;pop&quot;)
        {
            if (q.empty())
            {
                cout &amp;lt;&amp;lt; -1 &amp;lt;&amp;lt; &quot;\n&quot;;
            }
            else
            {
                cout &amp;lt;&amp;lt; q.front() &amp;lt;&amp;lt; &quot;\n&quot;;
                q.pop();
            }
        }
        else if (command == &quot;size&quot;)
        {
            cout &amp;lt;&amp;lt; q.size() &amp;lt;&amp;lt; &quot;\n&quot;;
        }
        else if (command == &quot;empty&quot;)
        {
            cout &amp;lt;&amp;lt; (q.empty() ? 1 : 0) &amp;lt;&amp;lt; &quot;\n&quot;;
        }
        else if (command == &quot;front&quot;)
        {
            if (q.empty())
            {
                cout &amp;lt;&amp;lt; -1 &amp;lt;&amp;lt; &quot;\n&quot;;
            }
            else
            {
                cout &amp;lt;&amp;lt; q.front() &amp;lt;&amp;lt; &quot;\n&quot;;
            }
        }
        else if (command == &quot;back&quot;)
        {
            if (q.empty())
            {
                cout &amp;lt;&amp;lt; -1 &amp;lt;&amp;lt; &quot;\n&quot;;
            }
            else
            {
                cout &amp;lt;&amp;lt; q.back() &amp;lt;&amp;lt; &quot;\n&quot;;
            }
        }
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/179</guid>
      <comments>https://pro-train.tistory.com/179#entry179comment</comments>
      <pubDate>Mon, 30 Dec 2024 17:50:24 +0900</pubDate>
    </item>
    <item>
      <title>Baekjoon 10816.숫자 카드 2 c++ [Silver IV]</title>
      <link>https://pro-train.tistory.com/178</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;unordered_map&lt;/p&gt;
&lt;table id=&quot;status-table&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: start; border-collapse: collapse; width: 46.3953%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 22.093%;&quot;&gt;메모리&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 24.186%;&quot;&gt;시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;solution-87975867&quot; data-can-view=&quot;1&quot;&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 22.093%;&quot;&gt;43828KB&lt;span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 24.186%;&quot;&gt;488ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1735546603381&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;unordered_map&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N;
    cin &amp;gt;&amp;gt; N;
    unordered_map&amp;lt;int, int&amp;gt; numbers;

    while (N--)
    {
        int i;
        cin &amp;gt;&amp;gt; i;
        numbers[i]++;
    }
    int M;
    cin &amp;gt;&amp;gt; M;
    while (M--)
    {
        int check;
        cin &amp;gt;&amp;gt; check;
        cout &amp;lt;&amp;lt; numbers[check] &amp;lt;&amp;lt; &quot; &quot;;
    }
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이진탐색&lt;/p&gt;
&lt;table id=&quot;status-table&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: start; border-collapse: collapse; width: 44.186%; height: 37px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; width: 21.9767%;&quot;&gt;메모리&lt;/td&gt;
&lt;td style=&quot;height: 20px; width: 22.093%;&quot;&gt;시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;solution-87976030&quot; style=&quot;height: 17px;&quot; data-can-view=&quot;1&quot;&gt;
&lt;td style=&quot;height: 17px; width: 21.9767%;&quot;&gt;5936KB&lt;span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 22.093%;&quot;&gt;288ms&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;pre id=&quot;code_1735547421512&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;algorithm&amp;gt;
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N, M;
    cin &amp;gt;&amp;gt; N;

    vector&amp;lt;int&amp;gt; cards(N);
    for (int i = 0; i &amp;lt; N; ++i)
    {
        cin &amp;gt;&amp;gt; cards[i];
    }

    sort(cards.begin(), cards.end());

    cin &amp;gt;&amp;gt; M;
    vector&amp;lt;int&amp;gt; queries(M);
    for (int i = 0; i &amp;lt; M; ++i)
    {
        cin &amp;gt;&amp;gt; queries[i];
    }

    for (int query : queries)
    {
        auto lower = lower_bound(cards.begin(), cards.end(), query);
        auto upper = upper_bound(cards.begin(), cards.end(), query);

        cout &amp;lt;&amp;lt; (upper - lower) &amp;lt;&amp;lt; &quot; &quot;;
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lower_bound는 &lt;b&gt;10&lt;/b&gt;이 처음 등장하는 위치 찾기 -&amp;gt; 정렬된 배열에서 10은 &lt;b&gt;인덱스 7&lt;/b&gt;에 처음 등장 -&amp;gt; 즉, lower_bound는 cards[7]을 가리킨다. -&amp;gt; upper_bound는 &lt;b&gt;10&lt;/b&gt;보다 큰 값이 처음 등장하는 위치를 찾고 -&amp;gt; 정렬된 배열에서 10보다 큰 값은 없음 -&amp;gt; 따라서 upper_bound는 &lt;b&gt;인덱스 10&lt;/b&gt; (배열의 끝)을 가리킨다. &lt;b&gt;upper - lower = 10 - 7 = 3&lt;/b&gt;&lt;/p&gt;</description>
      <category>Baekjoon/Silver</category>
      <category>Algorithm</category>
      <category>BaekJoon</category>
      <category>c++</category>
      <author>Hun-bot</author>
      <guid isPermaLink="true">https://pro-train.tistory.com/178</guid>
      <comments>https://pro-train.tistory.com/178#entry178comment</comments>
      <pubDate>Mon, 30 Dec 2024 17:39:49 +0900</pubDate>
    </item>
  </channel>
</rss>