백준 1373번 2진수 8진수

honeyricecake·2022년 1월 29일
0

백준

목록 보기
16/30

처음 제출한 코드

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

char array[1000000];
char brray[333333];

int main()
{
	scanf("%s", array);
	int length = strlen(array);
	int mod = length % 3;
	int count = length / 3;
	int temp = length;
	int turn = count;
	if (mod)
	{
		while (temp != mod)
		{
			brray[turn--] = array[temp - 1] + (array[temp - 2] - 48) * 2 + (array[temp - 3] - 48) * 4;
			temp -= 3;
		}
		if (mod == 1) brray[0] = array[0];
		if (mod == 2) brray[0] = (array[0] - 48) * 2 + array[1];
	}
	else
	{
		turn = count - 1;
		while (temp)
		{
			brray[turn--] = array[temp - 1] + (array[temp - 2] - 48) * 2 + (array[temp - 3] - 48) * 4;
			temp -= 3;
		}
	}
	printf("%s", brray);
    return 0;
}

if문의 사용이 마음에 들지 않아 좀 더 일관되게 풀고 싶어 제출한 두번째 코드

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

char array[1000002];
char brray[333334];

int main()
{
	scanf("%s", array);
	int length = strlen(array);
	int i;
	int k = 1000002 - length;
	for (i = length - 1; i >= 0; i--)
	{
		array[i + k] = array[i];
	}
	array[i + k] = '0';
	array[i + k - 1] = '0';
	int count = ((length - 1) / 3) + 1;
	int cur = 1000001;
	for (i = count - 1; i >= 0 ; i--)
	{
		brray[i] = array[cur] + (array[cur - 1] - '0') * 2 + (array[cur - 2] - '0') * 4;
		cur -= 3;
	}
	printf("%s", brray);
	return 0;
}

0개의 댓글