반응형

#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h>

int s;

void binary(int n, int i)
{
	if (i == 0 && n <= 3)
	{
		s = 1;
		if (n == 1) s = 0;
	}

	else s = 2;

		for (int i = s; i >= 0; i--)
		{
			if (n >= pow(2, i))
			{
				printf("1");
				n -= int(pow(2, i));
			}
			else printf("0");
		}
	


}

int main(void)
{
	char input[333444];
	scanf("%s", &input);
	int len = strlen(input);

	if (input[0] == 48) printf("0");
	else
	{
		for (int i = 0; i < len; i++)
		{
			binary(input[i] - 48, i);
		}
	}
	
}

 

314의 경우 2진법으로 3자리씩 끊어서 출력하는데

3은 2진법으로 011

1은 2진법으로 001

4는 2진법으로 100 이므로

('0'+'1'+'1')+('0'+'0'+'1')+('1'+'0'+'0') =  011001100 이며 맨 앞에 0 이 올 시에 생략해준다는 조건문을 달아주면 된다.

반응형

+ Recent posts