<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>알고리즘(Problem Solving) 공부 블로그</title>
    <link>https://bitwise.tistory.com/</link>
    <description>알고리즘 공부하는 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 9 Jul 2026 11:20:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>cepiloth</managingEditor>
    <image>
      <title>알고리즘(Problem Solving) 공부 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/2000027/attach/e782985e257a417681d5b438bec7c88c</url>
      <link>https://bitwise.tistory.com</link>
    </image>
    <item>
      <title>백준 1940번: 주몽</title>
      <link>https://bitwise.tistory.com/522</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1940&quot;&gt;https://www.acmicpc.net/problem/1940&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1609912602812&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1940번: 주몽&quot; data-og-description=&quot;첫째 줄에는 재료의 개수 N(1 &amp;le; N &amp;le; 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한&amp;nbsp;수 M(1 &amp;le; M &amp;le; 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1940&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1940&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bN5JPS/hyIPGD7xw8/JpVOaLQvKyhFUaSoUEmBo1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1940&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1940&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bN5JPS/hyIPGD7xw8/JpVOaLQvKyhFUaSoUEmBo1/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;&gt;1940번: 주몽&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에는 재료의 개수 N(1 &amp;le; N &amp;le; 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한&amp;nbsp;수 M(1 &amp;le; M &amp;le; 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1609912592536&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;functional&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;list&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;deque&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;stack&amp;gt;
#include &amp;lt;math.h&amp;gt;
#include &amp;lt;memory.h&amp;gt;
using namespace std;

#define MAX_SIZE 100
#define INF 0x7fffffff
#define CENDL &quot;\n&quot;
#define ll long long

#define c_reverse(s) reverse(s.begin(), s.end())
#define c_sort(s) sort(s.begin(), s.end())
#define print_vector(v) for(int i=0; i&amp;lt;v.size(); i++) cout &amp;lt;&amp;lt; v[i];

int main() {

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

    long long n, k; cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;

    int sol = 0;
    set&amp;lt;int&amp;gt;st;
    
    for (int i = 0; i &amp;lt; n; i++) {
        int d;
        cin &amp;gt;&amp;gt; d;
        if (k &amp;gt;= d &amp;amp;&amp;amp; st.count(k - d) == 0) {
            st.insert(d);
        }
        else if (k &amp;gt;= d) {
            sol++;
        }
    }
    
    cout &amp;lt;&amp;lt; sol &amp;lt;&amp;lt; CENDL;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>정수론(Number theory)</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/522</guid>
      <comments>https://bitwise.tistory.com/522#entry522comment</comments>
      <pubDate>Wed, 6 Jan 2021 14:56:58 +0900</pubDate>
    </item>
    <item>
      <title>PermCheck</title>
      <link>https://bitwise.tistory.com/521</link>
      <description>&lt;p&gt;코딜리 기본 문제이다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609912488375&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;algorithm&amp;gt;
 
// you can write to stdout for debugging purposes, e.g.
// cout &amp;lt;&amp;lt; &quot;this is a debug message&quot; &amp;lt;&amp;lt; endl;
 
int solution(vector&amp;lt;int&amp;gt; &amp;amp;A) {
    // write your code in C++14 (g++ 6.2.0)
    
    sort(A.begin(), A.end());
    
    int ok = 1;
    const int size = A.size();
    for(int i=1; i&amp;lt;size; i++) {
        if(A[i-1]+1 != A[i]) {
            ok = 0;
            break;
        }
    }
    
    return ok;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/521</guid>
      <comments>https://bitwise.tistory.com/521#entry521comment</comments>
      <pubDate>Wed, 6 Jan 2021 14:55:26 +0900</pubDate>
    </item>
    <item>
      <title>문자 - 펠린드롬(Palindrome) 인지 확인 하기</title>
      <link>https://bitwise.tistory.com/520</link>
      <description>&lt;pre id=&quot;code_1609904822496&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
 
// A function to check if a string str is palindrome
void isPalindrome(char str[])
{
    // Start from leftmost and rightmost corners of str
    int l = 0;
    int h = strlen(str) - 1;
 
    // Keep comparing characters while they are same
    while (h &amp;gt; l)
    {
        if (str[l++] != str[h--])
        {
            printf(&quot;%s is Not Palindrome&quot;, str);
            return;
        }
    }
    printf(&quot;%s is palindrome&quot;, str);
}
 
// Driver program to test above function
int main()
{
    isPalindrome(&quot;abba&quot;);
    isPalindrome(&quot;abbccbba&quot;);
    isPalindrome(&quot;geeks&quot;);
    return 0;
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>palindrome</category>
      <category>문자펠린드롬</category>
      <category>회귀</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/520</guid>
      <comments>https://bitwise.tistory.com/520#entry520comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:47:34 +0900</pubDate>
    </item>
    <item>
      <title>숫자 - 펠린드롬(Palindrome) 인지 확인 하기</title>
      <link>https://bitwise.tistory.com/519</link>
      <description>&lt;pre id=&quot;code_1609904744624&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;functional&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;list&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;deque&amp;gt;
//#include &amp;lt;map&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;stack&amp;gt;
#include &amp;lt;cstring&amp;gt;
 
#define MAX_SIZE 100
#define INF 0x7fffffff
 
using namespace std;
 
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, -1, 1};
 
int reverse(int x) {
    int rev = 0;
    while(x != 0){
        rev = rev*10 + x%10;
        x = x/10;
    }
    return rev;
}
 
int main() {
 
    int n; cin  &amp;gt;&amp;gt; n;
 
     if (n == reverse(n)) {
        cout &amp;lt;&amp;lt; &quot;Ok&quot; &amp;lt;&amp;lt; &quot;\n&quot;;
     } else {
        cout &amp;lt;&amp;lt; &quot;No&quot; &amp;lt;&amp;lt; &quot;\n&quot;;
    }
    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>기본(Basic)</category>
      <category>palindrome</category>
      <category>숫자</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/519</guid>
      <comments>https://bitwise.tistory.com/519#entry519comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:46:36 +0900</pubDate>
    </item>
    <item>
      <title>순열 출력하기</title>
      <link>https://bitwise.tistory.com/518</link>
      <description>&lt;p&gt;stl 의 nextnext_permutation 메소드를 사용하면 stl container 의 요소를 순열로 출력할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609904634383&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;functional&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;list&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;deque&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;stack&amp;gt;
#include &amp;lt;cstring&amp;gt;
 
using namespace std;
 
#define MAX_SIZE 100
#define INF 0x7fffffff
#define CENDL &quot;\n&quot;
#define ll long long
 
/*
* @memory  - 2056 kb
* @time    - 0 ms
*/
 
int main() {
 
    cin.tie(0);
    std::ios::sync_with_stdio(false);
 
    vector&amp;lt;int&amp;gt; arr;
 
    arr.push_back(1);
    arr.push_back(2);
    arr.push_back(3);
    arr.push_back(9);
 
    do 
    {
        const int size = arr.size();
        for(int i=0; i&amp;lt;size; i++) {
            cout &amp;lt;&amp;lt; arr[i];
        }
        cout &amp;lt;&amp;lt; CENDL;
 
    } while (next_permutation(arr.begin(), arr.end()));
 
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609904652442&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1239
1293
1329
1392
1923
1932
2139
2193
2319
2391
2913
2931
3129
3192
3219
3291
3912
3921
9123
9132
9213
9231
9312
9321&lt;/code&gt;&lt;/pre&gt;</description>
      <category>기본(Basic)</category>
      <category>next_permutation</category>
      <category>순열</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/518</guid>
      <comments>https://bitwise.tistory.com/518#entry518comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:45:07 +0900</pubDate>
    </item>
    <item>
      <title>정수 - 수를 처리하는 방법</title>
      <link>https://bitwise.tistory.com/517</link>
      <description>&lt;p&gt;&amp;nbsp;경진 프로그램에서 가장 많이 사용되는 정수 자료형은 int 이다. 이 자료혀은 32bit 자료형이며 범위는 -2^32 ... 2^31-1(대략 -2*10^9 ... 2*10^9)이다. 만일 int로는 부족하다면 64bit 자료형인 long long을 사용하면 된ㄴ다. 이 자료형의 범위는 &lt;span style=&quot;color: #333333;&quot;&gt;-2^64 ... 2^63-1(대략 -2*10^18 ... 2*10^&lt;span style=&quot;color: #333333;&quot;&gt;18&lt;/span&gt;)이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;다음 코드에 long long 변수를 정의하는 방법이 나와 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609902940975&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long long x = 123456789123456789LL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;접미사 LL은 이 정수값이 자료형이 long long임을 의미한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;long long 자료형을 사용하다 보면 코드의 다른 어딘가에서 여전히 int 자료형을 사용하는 실수를 종종 하게 된다. 예를 들어 다음 코드에는 교묘한 버그가 숨어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609903026428&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123456789;
long long b = a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;비록 값을 저장할 변수의 자료형은 long long 이지만, 계산식 a*a에 포함된 두 수의 자료형이 모두 int이기 때문에 결과 또한 int가 된다. 이러한 이유로 인해 변수 b에는 잘못된 값이 저장된다. 이문제를 해결하려면 a의 자료형을 long long으로 바꾸거나 계산식을 (long long)a*a로 바꾸면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예시 1)&lt;/p&gt;
&lt;pre id=&quot;code_1609903134608&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long long a = 123456789;
long long b = a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예시 2)&lt;/p&gt;
&lt;pre id=&quot;code_1609903139150&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123456789;
long long b = (long long)a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;대부분의 대회 문제는 long long 자료형을 사용하면 충분하도록 출제된다. 그렇다라도 g++ 컴팡이러가 128bit 자료형인 __int128_t를 지원한다는 사실을 알아두면 도움이 될 것이다. 그러나 모든 대회 시스템이 이 자료형을 지원하지는 않는다.&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>수를 처리하는 방법</category>
      <category>오버플로우</category>
      <category>정수</category>
      <category>정수오버플로우</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/517</guid>
      <comments>https://bitwise.tistory.com/517#entry517comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:43:07 +0900</pubDate>
    </item>
    <item>
      <title>정수 - 수를 처리하는 방법</title>
      <link>https://bitwise.tistory.com/516</link>
      <description>&lt;p&gt;&amp;nbsp;경진 프로그램에서 가장 많이 사용되는 정수 자료형은 int 이다. 이 자료혀은 32bit 자료형이며 범위는 -2^32 ... 2^31-1(대략 -2*10^9 ... 2*10^9)이다. 만일 int로는 부족하다면 64bit 자료형인 long long을 사용하면 된ㄴ다. 이 자료형의 범위는 &lt;span style=&quot;color: #333333;&quot;&gt;-2^64 ... 2^63-1(대략 -2*10^18 ... 2*10^&lt;span style=&quot;color: #333333;&quot;&gt;18&lt;/span&gt;)이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;다음 코드에 long long 변수를 정의하는 방법이 나와 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609902940975&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long long x = 123456789123456789LL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;접미사 LL은 이 정수값이 자료형이 long long임을 의미한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;long long 자료형을 사용하다 보면 코드의 다른 어딘가에서 여전히 int 자료형을 사용하는 실수를 종종 하게 된다. 예를 들어 다음 코드에는 교묘한 버그가 숨어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609903026428&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123456789;
long long b = a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;비록 값을 저장할 변수의 자료형은 long long 이지만, 계산식 a*a에 포함된 두 수의 자료형이 모두 int이기 때문에 결과 또한 int가 된다. 이러한 이유로 인해 변수 b에는 잘못된 값이 저장된다. 이문제를 해결하려면 a의 자료형을 long long으로 바꾸거나 계산식을 (long long)a*a로 바꾸면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예시 1)&lt;/p&gt;
&lt;pre id=&quot;code_1609903134608&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long long a = 123456789;
long long b = a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예시 2)&lt;/p&gt;
&lt;pre id=&quot;code_1609903139150&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123456789;
long long b = (long long)a*a;
cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &quot;\n&quot;; // -1757895751&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;대부분의 대회 문제는 long long 자료형을 사용하면 충분하도록 출제된다. 그렇다라도 g++ 컴팡이러가 128bit 자료형인 __int128_t를 지원한다는 사실을 알아두면 도움이 될 것이다. 그러나 모든 대회 시스템이 이 자료형을 지원하지는 않는다.&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>수를 처리하는 방법</category>
      <category>오버플로우</category>
      <category>정수</category>
      <category>정수오버플로우</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/516</guid>
      <comments>https://bitwise.tistory.com/516#entry516comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:20:42 +0900</pubDate>
    </item>
    <item>
      <title>출력(C++ cout)</title>
      <link>https://bitwise.tistory.com/515</link>
      <description>&lt;p&gt;cout 스트림을 이용하여 출력하려면 다음과 같이 하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902176376&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123, b = 456;
string x = &quot;monkey&quot;;

cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot;\n&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간혹 입력과 같이 출력이 프로그램의 병목이 될 때가 있다. 코드 시작 부터 다음과 같은 코드를 추가하면 입력과 출력을 좀 더 효율적으로 할 수 있다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;(단 이코드를 사용했을 때는 scanf, pritnf와 같은 C 언어 함수를 C++ 입출력 함수와 동시에 사용할 수 없다.)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609902238311&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ios::sync_with_stdio(0)
cin.tie(0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;개행 문자 &quot;\n&quot;이 endl보다 빠르다는 점에 유의하라. 이는 endl을 사용하면 명시적으로 플러시(flush, 출력 버퍼 비우기)가 일어나기 때문이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;C++ 표준 스트림 대신에 C 언어 함수인 scanf, prinf를 사용할 수도 있다. 대체로 이 두 함수가 스트림보다 약간 더 빠르지만, 사용법이 좀 더 어렵기도 하다. 다음 코드는 두 개의 정수를 입력받는 코드이다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902343149&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a, b;
scanf(&quot;%d %d\n&quot;, a, b);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음 코드는 두 개의 정수를 출력하는 코드이다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902392706&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 123, b = 456;
pritnf(&quot;%d %d\n&quot;, a, b);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;때로는 입력 한 줄을 통째로, 공백을 포함한 채로 읽어 들이는 프로그램을 작성해야 한다. 그럴 때는 getline 함수를 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902430531&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;string s;
getline(cin, s);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만일 데이터의 양을 사전에 알 수 없다면 다음과 같은 형태의 반복문을 활용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902468368&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while(cin &amp;gt;&amp;gt; x) {
	// TODO : 코드
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위 반복문은 입력에 포함된 원소를 하나하나씩 읽어 들이다가 더 이상 데이터가 남아 있지 않을 때 멈춘다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;몇몇 대회 시스템으ㄴ 입력과 추류력을 위해 파일을 사용하기도 한다. 이를 간단하게 처리하는 방법은 평소처럼 표준 스트림을 사용하는 코드를 작성한 후, 다음 두 줄을 코드의 시작 부분에 추가하는 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1609902694305&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;freopen(&quot;input.txt&quot;, stdin);
freopen(&quot;output.txt&quot;, stout);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 구문을 수행하고 나면 프로그램이 'input.txt' 파일에서 잏ㅂ력을 읽어 들이고, 'output'txt' 파일로 출력을 쓰게 된다.&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>c++</category>
      <category>COUT</category>
      <category>stl</category>
      <category>기본적인출력</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/515</guid>
      <comments>https://bitwise.tistory.com/515#entry515comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:08:52 +0900</pubDate>
    </item>
    <item>
      <title>입력(C++ cin)</title>
      <link>https://bitwise.tistory.com/514</link>
      <description>&lt;p&gt;&amp;nbsp;대부분의 대회에서는 입력을 읽고 출력을 쓸 때 표준 스트림을 사용한다. C++의 표준 스트림은 입력에 대해서는 cin이고, 출력에 대해서는 cout이다. scanf, printf와 같은&amp;nbsp; C 언어 함수도 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;프로그램의 입력은 보통 공백 문자나 개행 문자로 구분된 문자열 및 수로 이루어진다. 이러한 입력을 cin 스트림으로 읽어 들이려면 다음과 같이 하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609901953014&quot; class=&quot;c++ arduino&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a, b;
string x;

cin &amp;gt;&amp;gt; a &amp;gt;&amp;gt; b &amp;gt;&amp;gt; x;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;입력을 구성하는 각 원소 사이에 적어도 한 개의 공백 문자나 개행 문자가 존재할 경우, 이러한 형태의 코드는 항상 문제없이 동작한다. 예를 들어 이 코드는 다음과 같은 두 가지 형태의 입력을 모두 읽어 들일 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;123 456 monkey &amp;lt;- 공백 문자만 존재&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;123 456 &amp;lt;- 공백 문자와 개행 문자가 모두 존재&lt;/p&gt;
&lt;p&gt;monkey&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>c++</category>
      <category>cin</category>
      <category>입력</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/514</guid>
      <comments>https://bitwise.tistory.com/514#entry514comment</comments>
      <pubDate>Wed, 6 Jan 2021 12:01:33 +0900</pubDate>
    </item>
    <item>
      <title>언어적 특성</title>
      <link>https://bitwise.tistory.com/513</link>
      <description>&lt;p&gt;경진 프로그램에서 사용되는 C++ 코드 템플릿의 전형적인 형태는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609901621383&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;

int main() {
	// TODO : 이 부분에 풀이를 작성한다.
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#include로 시작하는 코드 첫 줄은 표준 라이브러리 전체를 포함시키는 g++ 컴파일러의 기능이다. 이 경우 iostream, vector, algorithm 등의 라이브러리를 개별적으로 포함시키지 않아도 자동으로 사용할 수 있게 된다. (g++ 컴팡이러만 가능 mvsc 는 안됩니다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드의 using 구문은 표준 라이브러리의 클래스 및 함수를 바로 사용할 수 있도록 하기 위한 선언문이다. 이 구문이 있으면, 예를 들어 std::cout이 아니라 cout과 같은 식으로 코드를 작성할 수 있게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;작성한 코드는 다음 명령어로 컴파일한다.&lt;br /&gt;&lt;br /&gt;g++ -std=c++11 -02 -Wall test.cpp -o test&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 명령어는 test.cpp라는 소스 코드를 컴파일하여 test라는 실행 파일을 생성한다. 컴파일러는 C++11 표준을 따르고(-std=c++11), 코드를 최적화하며(-02), 발생 가능한 오류에 대한 경고를 띄워준다(-Wall)&lt;/p&gt;</description>
      <category>기본(Basic)</category>
      <category>bits/stdc</category>
      <category>GCC</category>
      <category>기본문장</category>
      <category>코딩테스트</category>
      <author>cepiloth</author>
      <guid isPermaLink="true">https://bitwise.tistory.com/513</guid>
      <comments>https://bitwise.tistory.com/513#entry513comment</comments>
      <pubDate>Wed, 6 Jan 2021 11:57:29 +0900</pubDate>
    </item>
  </channel>
</rss>