본문 바로가기
알고리즘/백준

C++ 백준 BOJ 1212 8진수 2진수

by parkkingcar 2022. 11. 15.

 

 

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하는 문제입니다.

 

 

(난이도는 높지 않지만 출력값의 맨 앞이 0이 되는 경우, 시간초과 예외로 맨탈이..)

 

 

 

 

1212번: 8진수 2진수

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

www.acmicpc.net

#include <iostream>
#include <string>
using namespace std;

int main(){
    string octal_str, binary_str = "";
    
    cin >> octal_str;
    for(int i = 0; i < octal_str.size(); i++){
        switch (octal_str[i]){
            case '0':
                if(i == 0){
                    binary_str += "0";
                    break;
                }
                else{
                    binary_str += "000";
                    break;
                }
            case '1':
                if(i == 0){
                    binary_str += "1";
                    break;
                }
                else{
                    binary_str += "001";
                    break;
                }
            case '2':
                if(i == 0){
                    binary_str += "10";
                    break;
                }
                else{
                    binary_str += "010";
                    break;
                }
            case '3':
                if(i == 0){
                    binary_str += "11";
                    break;
                }
                else{
                    binary_str += "011";
                    break;
                }
            case '4':
                binary_str += "100";
                break;
            case '5':
                binary_str += "101";
                break;
            case '6':
                binary_str += "110";
                break;
            case '7':
                binary_str += "111";
                break;
        }
    }
    cout << binary_str;
    return 0;
}

 

 

 

2진수에서 3자리씩 끊어서 생각하면 됩니다. 

 

 

예를들어 2진수100010001이면, 100 / 010 / 001 로 나눌 수 있습니다.

 

이때, 0011 / 0102 / 1004이므로 8진수124가 된다는 것을 알 수 있습니다.

 

 

 

+ 맨 앞에 0이 올 수 없기 때문에  첫 글자가 0일때 예외처리 해주면 됩니다.

 

 

 

 

 

  아래 글은 진법 변환에 관한 제 블로그 글입니다.

 

 

[기초] 알고리즘 수학2

4. 진법 변환 (Base Conversion) 4-1. 10진법 수 N을 B진법으로 바꾸려면 N이 0이 될때 까지 나머지를 계속 구하면 됩니다. 예를 들어 11을 3진법으로 바꾸는 방법은 11/3 = 3 나머지는2 3/3 = 1 나머지는0 1/3 = 0

parkkingcar.tistory.com

 

댓글