본문 바로가기

Algorithm

(C++) - 백준(BOJ) 1373번 : 2진수 8진수

반응형

https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

2진수의 세자리당 8진수의 한 자리에 해당합니다. 이를 이용하면 쉽게 푸실 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
    string k;
    string mod ="";
    string ans = "";
    cin >> k;
    int len = k.size();
    int cnt = 0;
    for (int i = len - 1; i >= 0; i--)
    {
        mod += k[i];
        cnt++;
        if (cnt == 3 || i == 0)
        {
            int sum = 0;
            for (int j = 0; j < mod.size(); j++)
                if (mod[j] == '1')
                    sum += pow(2, j);
            mod = "";
            cnt = 0;
            ans += sum + '0';
 
        }
    }
    for (int i = 0; i < ans.size()/2; i++)
        swap(ans[i], ans[ans.size() - 1 - i]);
    cout << ans << '\n';
}
cs