백준 - 1212

아따맘마·2020년 11월 22일
0

알고리즘 - 백준

목록 보기
4/53

문제

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);
}
profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자

0개의 댓글