본문 바로가기
코테

백준 1212번 - 8진수 2진수

by arirang_ 2023. 8. 4.

//1번

#include <bits/stdc++.h>
using namespace std;

string convertToBinary(int num) {
    string binaryStr = "";

    while (num > 0) {
        int remainder = num % 2;
        binaryStr = to_string(remainder) + binaryStr;
        num /= 2;
    }

    return binaryStr;
}

int main() {
    string octalStr;
    cin >> octalStr;

    // 입력이 0인 경우 예외 처리
    if (octalStr == "0") {
        cout << 0;
    } else {
        string binaryStr = "";

        // 각 자리의 8진수 숫자를 2진수로 변환하여 이어붙임
        for (char digit : octalStr) {
            int num = digit - '0'; // char를 int로 변환
            string binaryDigit = convertToBinary(num);
            // 각 자리의 2진수를 3자리로 맞춰줌
            while (binaryDigit.size() < 3) {
                binaryDigit = "0" + binaryDigit;
            }
            binaryStr += binaryDigit;
        }

        // 첫 번째 자리가 0인 경우 0을 제외하고 출력
        int startIdx = 0;
        while (binaryStr[startIdx] == '0') {
            startIdx++;
        }
        cout << binaryStr.substr(startIdx);
    }

    return 0;
}

 

//2번(인터넷 참고)

#include <bits/stdc++.h>
using namespace std;

string eight;
string two[8]={"000","001","010", "011", "100", "101", "110", "111"};
int tmp;

int main(){
	cin >> eight;
	
	for(int i=0; i<eight.size(); i++){
		tmp = eight[i]-'0';
		if(i==0){
			cout << stoi(two[tmp]);
		}else cout << two[tmp];
	}
	
	return 0;
}

'코테' 카테고리의 다른 글

백준 1233번 -주사위  (0) 2023.08.06
백준 1225번- 이상한 곱셈  (0) 2023.08.04
백준 1173번-운동  (0) 2023.07.31
백준 1159번- 농구 경기  (0) 2023.07.30
백준 1157번 - 단어 공부  (0) 2023.07.28