백준
백준 1373 - 2진수 8진수(C++)
공대생의 잡다한 사전
2023. 7. 2. 23:05
문제 링크입니다. https://www.acmicpc.net/problem/1373
1373번: 2진수 8진수
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
www.acmicpc.net
2진수를 8진수로 만드는 방법은 뒤에서부터 3개씩 끊어서 변경해주면 됩니다.
예를 들어 11001100의 경우 11 / 001 / 100 으로 나누어 각각 3 , 1 , 4로 만든 뒤, 이를 합쳐주는 과정입니다.
자세한 것은 코드를 참고해주세요
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>
using namespace std;
string x, y, ans;
int main(){
cin.tie(0);
cout.tie(0);
cin >> x;
for(int i = x.size() - 1; i >= 0; i--){
y += x[i];
if(y.size() == 3){
int sum = 0;
for(int j = 0; j < 3; j++){
if(y[j] == '1') sum += pow(2, j);
}
ans += sum + '0';
y = "";
}
}
if(y.size() > 0){
int sum = 0;
for(int j = 0; j < y.size(); j++){
if(y[j] == '1') sum += pow(2, j);
}
ans += sum + '0';
}
reverse(ans.begin(), ans.end());
cout << ans;
return 0;
}
질문 및 조언은 댓글을 남겨주세요