8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하는 문제입니다.
(난이도는 높지 않지만 출력값의 맨 앞이 0이 되는 경우, 시간초과 예외로 맨탈이..)
#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 로 나눌 수 있습니다.
이때, 001은 1 / 010은 2 / 100은 4이므로 8진수로 124가 된다는 것을 알 수 있습니다.
+ 맨 앞에 0이 올 수 없기 때문에 첫 글자가 0일때 예외처리 해주면 됩니다.
아래 글은 진법 변환에 관한 제 블로그 글입니다.
'알고리즘 > 백준' 카테고리의 다른 글
C++ 백준 BOJ 1620 나는야 포켓몬 마스터 이다솜 (0) | 2022.12.27 |
---|---|
C++ 백준 BOJ 11726 2 x n 타일링 (0) | 2022.12.19 |
C++ 백준 BOJ 10870 피보나치 수 5 (0) | 2022.07.27 |
C++ 백준 BOJ 9012 괄호 (0) | 2022.07.25 |
C++ 백준 BOJ 2960 에라토스테네스의 체 (0) | 2022.04.30 |
댓글