알고리즘 모음(C++)

백준 1373 - 2진수 8진수(C++) 본문

백준

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

공대생의 잡다한 사전 2023. 7. 2. 23:05

문제 링크입니다. https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

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

www.acmicpc.net

 

2진수를 8진수로 만드는 방법은 뒤에서부터 3개씩 끊어서 변경해주면 됩니다.

 

예를 들어 11001100의 경우 11 / 001 / 100 으로 나누어 각각 3 , 1 , 4로 만든 뒤, 이를 합쳐주는 과정입니다.

 

 

자세한 것은 코드를 참고해주세요

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>

using namespace std;

string x, y, ans;

int main(){
    cin.tie(0);
    cout.tie(0);
    cin >> x;
    for(int i = x.size() - 1; i >= 0; i--){
        y += x[i];
        if(y.size() == 3){
            int sum = 0;
            for(int j = 0; j < 3; j++){
                if(y[j] == '1') sum += pow(2, j);
            }
            ans += sum + '0';
            y = "";
        }
    }
    if(y.size() > 0){
        int sum = 0;
        for(int j = 0; j < y.size(); j++){
            if(y[j] == '1') sum += pow(2, j);
        }
        ans += sum + '0';
    }
    reverse(ans.begin(), ans.end());
    cout << ans;
    return 0;
}

 

 

질문 및 조언은 댓글을 남겨주세요

'백준' 카테고리의 다른 글

백준 2745 - 진법 변환(C++)  (0) 2023.07.02
백준 1439 - 뒤집기(C++)  (0) 2023.07.02
백준 14425 - 문자열 집합(C++)  (0) 2023.07.02
백준 25501 - 재귀의 귀재(C++)  (0) 2023.06.18
백준 12904 - A와 B(C++)  (0) 2023.06.18