PS/BOJ

[백준 BOJ] 1212 8진수 2진수

Jubil 2021. 3. 8. 16:00
반응형

링크

www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

 

풀이

8진수를 2진수로 변환하는 코드를 작성해야 한다.

8진수의 한 자리가 2진수로 변환했을 때 3자리씩 나오기 때문에 string으로 입력 받아 한 자리씩 변환해주면 된다.

 

수가 0일 때 0을 출력하는 것과 맨 앞자리가 1부터 시작될 수 있도록 flag를 하나 세워주면 문제를 해결할 수 있다. 

 

 

코드

//1212_8진수 2진수
#include <iostream>
#include <string>
using namespace std;

string str, res;

int main() {
	cin >> str;

	if (str == string("0")) printf("0\n");

	for (int i = 0; i < str.length(); i++) {
		res += to_string((str[i] - '0') / 4);
		res += to_string(((str[i] - '0') % 4) / 2);
		res += to_string((((str[i] - '0') % 4) % 2) / 1);
	}
	
	int flag = 0; // 앞에 0 자르고 1부터 출력하는 flag
	
	for (int i = 0; i < res.length(); i++) {
		if (!flag) {
			if (res[i] == '1') {
				flag = 1;
				cout << res[i];
			}
		}
		else {
			cout << res[i];
		}
	}
	
	cout << '\n';

	return 0;
}

반응형