알고리즘 모음(C++)

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

백준

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

공대생의 잡다한 사전 2023. 6. 18. 19:48

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

 

1212번: 8진수 2진수

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

www.acmicpc.net

8진수를 2진수로 바꾸는 문제입니다,

 

8진수를 2진수로 바꾸는 방법은 한자리마다 3개의 2진수로 바꾼 뒤, 합쳐주면 됩니다.

 

314의 경우에는 3, 1, 4로 나눈 뒤, 각각의 2진수를 3자리 구해줍니다.

 

011, 001, 100이 되는데, 이를 합쳐줍니다. -> 011001100, 여기서 시작이 0이 되면 안되니, 11001100을 출력하면 됩니다.

 

 

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

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

using namespace std;

string N, two;

int main(){
    cin.tie(0);
    cout.tie(0);
    cin >> N;
    for(int i = 0; i < N.size(); i++){
        int x = N[i] - '0', cnt = 2;
        string xx = "000";
        while(1){
            if(x == 0) break;
            if(x % 2 == 0) xx[cnt] = '0';
            else xx[cnt] = '1';
            cnt--;
            x /= 2;
        }
        two += xx;
    }
    if(N == "0") cout << "0";
    else{
        int flag = 0;
        for(int i = 0; i < two.size(); i++){
            if(!flag && two[i] == '0') continue;
            else{
                cout << two[i];
                flag = 1;
            }
        }
    }
    return 0;
}

 

 

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

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

백준 12904 - A와 B(C++)  (0) 2023.06.18
백준 4358 - 생태학(C++)  (0) 2023.06.18
백준 4999 - 아!(C++)  (0) 2023.06.15
백준 1120 - 문자열(C++)  (0) 2023.06.11
백준 1213 - 펠린드롬 만들기(C++)  (0) 2023.06.11