1212

문제

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

입력

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

출력

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

예제

  • 입력 : 314
  • 출력 : 11001100

풀이

2진수를 8진수로 바꾸는 문제를 거꾸로 해주면 된다.
8진수 숫자 하나하나 2진수 세자리로 바꿔준 후 출력해주면 된다.

코드

#include <iostream>
#include <vector>
#include <string>
using namespace std;

void	ft_print_binary(int n, int cnt)
{
	vector <int> binary;

	vector <int> ::reverse_iterator riter;
	while (1)
	{
		binary.push_back(n % 2);
		n /= 2;
		if (n == 0) break;
	}
	if (cnt != 0) # 첫재 자리수가 아닌경우 빈자리에 0 추가
	{
		while (binary.size() != 3)
			binary.push_back(0);
	}
	for (riter = binary.rbegin(); riter != binary.rend(); riter++)
		cout << *riter;
}
int		main()
{
	string			str;
	vector <int>	v;
	int				cnt = 0;

	cin >> str;
	for (int i = 0; i < str.length(); i++)
		v.push_back(str[i] - '0');
	for (auto x : v)
	{
		ft_print_binary(x, cnt);
		cnt++;
	}
		
	return (0);
}

좋은 웹페이지 즐겨찾기