less than 1 minute read

❓문제

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

✏️입력

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

📜출력

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

💻코드

    /*
        [백준 1212] 8진수 2진수
        22-09-06 / c++

        < 문제 >

        8진수를 2진수로 변형하시오

        < 알고리즘 >

        각 수를 십진수로 보고 세 자리의 이진수로 변환한 뒤
        이어붙인다

    */

    #include<iostream>
    #include<algorithm>
    #include<string>

    using namespace std;

    int main(void) {
        string oc;
        cin >> oc;

        if (oc == "0") {
            cout << 0 << "\n";
        }

        string res;
        for (int i = 0; i < oc.length(); i++) {
            res += to_string((oc[i] - '0') / 4);
            res += to_string(((oc[i] - '0') % 4) / 2);
            res += to_string((((oc[i] - '0') % 4) % 2) / 1);

        }

        bool flag = false;
        for (int i = 0; i < res.length(); i++) {
            if (!flag) {
                if (res[i] == '1') {
                    flag = true;
                    cout << res[i];
                }
            }
            else {
                cout << res[i];
            }
        }
        cout << "\n";

        return 0;
    }