https://www.acmicpc.net/problem/1212
1212번: 8진수 2진수
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
www.acmicpc.net
1373번과 비슷한 , 8진수->2진수로 변환하는 문제다. 주어지는 수 길이는 333,334을 넘지 않으므로 8진수가 333,333 이면 x3인 2진수는 999,999개이다. 8진수->10진수->2진수를 거치게되면 1373번과 마찬가지로 담을 수 없는 범위이므로 8진수->2진수로 바로 변환하여 출력했다. 0을 제외하고 모두 1로시작해야 하므로 if(i==0 && num[i]-'0' <=3 )조건을 추가하였다.
코드
//1212
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
cin.tie(NULL);
ios::sync_with_stdio(0);
string num;
cin>>num;
string result;
for(int i=0;i<num.size();i++){
if(i==0 && num[i]-'0' <=3 ){
if(num[i]-'0'>=2) cout << (num[i]-'0')/2 << (num[i]-'0')%2;
else if(num[i]-'0'==1) cout << "1";
else if(num[i]-'0'==0) cout<< "0";
}
else if(num[i]-'0'>=4) cout << (num[i]-'0')/4 << ((num[i]-'0')%4)/2 << ((num[i]-'0')%4)%2;
else if(num[i]-'0'>=2) cout << "0" << (num[i]-'0')/2 << (num[i]-'0')%2;
else if(num[i]-'0'==1) cout << "001";
else if(num[i]-'0'==0) cout << "000";
}
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1676번: 팩토리얼 0의 개수 (c++) (0) | 2022.03.31 |
---|---|
[Baekjon] 1373번: 2진수 8진수 (c++) (0) | 2022.03.31 |
[Baekjoon] 11656번 : 접미사 배열 (c++) (0) | 2022.03.31 |
[Baekjoon] 11655번 : ROT13 (c++) (0) | 2022.03.31 |
[Baekjoon] 11653번 : 소인수 분해 (c++) (0) | 2022.03.31 |