처음 제출한 코드
#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;
}