숨막히는 알고말고/문제 풀이

[Baekjoon] 2진수 8진수

숨숨숨 2021. 3. 10. 22:19

👀 문제 설명

문제

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

 

입력

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

 

출력

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.

 

예제 입력 1

11001100

 

예제 출력 1

314

✍🏻풀이

2진수를 8진수로 바꾸려면 뒤에서부터 3개씩 묶으면 된다.

[참고]

 

코드

#include <stdio.h>
#include <iostream>

using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(NULL); cout.tie(NULL);
    
    string str;
    cin >> str;
    
    int leng = str.length();
    
    if (leng % 3 == 1) {
        cout << str[0];
    }
    else if (leng % 3 == 2) {
        cout << (str[0] - '0') * 2 + (str[1] - '0');
    }
    
    for (int i = leng % 3; i < leng; i+= 3) {
        cout << (str[i] - '0') * 4 + (str[i + 1] - '0') * 2 + (str[i + 2] - '0');
    }
    cout << "\n";
    
    return 0;
}