1373번: 2진수 8진수

문제:

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

입력:

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

풀이:

코드:

#include <iostream>
#include <stack>

using namespace std;

int main(){
	int cnt = 0, temp = 0, multiple = 1;
	stack<int> answer;
	string s;
	//입력
	getline(cin, s);
	//첫번째 자리수부터 시작해야 되므로 s의 최대 크기부터 시작
	for(int i = s.size()-1; i >= 0; i--){
		//첫번째 경우를 제외한 매 3번째 연산마다 스택에 넣고 변수 초기화 
		if(cnt%3 == 0 && i != s.size()-1){
			answer.push(temp);
			temp = 0; 
			multiple = 1;
		} 
		//s[i]를 int값으로 바꿔 2의 n승 연산하여 temp에 더 함 
		temp += (s[i]-'0')*multiple;
		//2의 1승 추가
		multiple *= 2;
		cnt++;
	}
	//연산 끝나고 남은 값 추가 
	answer.push(temp);
	//출력 
	while(!answer.empty()){
		cout<<answer.top();
		answer.pop();
	}
	
}