Study hard
(c++)백준 1373번: 2진수 8진수 본문
https://www.acmicpc.net/problem/1373
1373번: 2진수 8진수
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
www.acmicpc.net
[풀이]
2진수를 8진수로 변환하는 방법은 2진수의 제일 오른쪽부터 3개씩 10진수로 변환하는 것이다.
11001100 = 314 |
2진수는 가장 뒤에서부터 보고, 8진수는 가장 뒤에 계산된 수를 먼저 출력해야하므로 8진수를 stack에 저장하였다.
#include <iostream>
#include <string>
#include <cmath>//pow
#include <stack>
using namespace std;
string Binary;
stack<int>Octal;
void solution() {
cin >> Binary;
int Bs = Binary.size();
int p = 0;//몇 개 봤는지
int num = 0;
for (int i = Bs - 1; i >= 0; i--) {
if(Binary[i]=='1')
num += pow(2, p);
//3자리 봤거나 제일 큰 자릿수이면
if (p == 2 || i == 0) {
Octal.push(num);
p = 0;
num = 0;
}
else
p++;
}
while (!Octal.empty()) {
cout << Octal.top();
Octal.pop();
}
cout << endl;
}
int main() {
solution();
return 0;
}
'백준 > 여러가지 문제들' 카테고리의 다른 글
(c++)백준 2089번: -2진수 (0) | 2020.06.17 |
---|---|
(c++)백준 1212번: 8진수 2진수 (0) | 2020.06.17 |
(c++)백준 2745번: 진법 변환 (0) | 2020.06.17 |
(c++)백준 11005번: 진법 변환 2 (0) | 2020.06.17 |
(c++)백준 9613번: GCD 합 (0) | 2020.06.17 |