제가 생각한 방법은
받은 문자열을 문제에 제시된 그림 (b)처럼 트리로 만들어서 풀려했어요.
그래서 tree[1001][5]를 만들어서
받은 문자열 pic[1001]이 x를 만나면 계속 타고 내려가고 반환값은 가장 바닥의 마지막 인덱스를 죽죽 반환해주어 다음으로 넘겨주는 식으로 했습니다. 그런데 계속 오답이 나오는데 혹시 짚어주실수있을까요???
#include<stdio.h>
int C;
char pic[1001];
int tree[1001][5];
int makeTree(int index)
{
int result;
if (pic[index] == 'w' || pic[index] == 'd')
return index + 1;
tree[index][0] = 1;
int temp = index + 1;
for (int i = 1; i <= 4; i++)
{
tree[index][i] = temp;
if (pic[temp] == 'x')
temp = makeTree(temp);
temp++;
}
temp--;
return temp;
}
void printTree(int index)
{
printf("%c", pic[index]);
if (tree[index][0] == 0)
return;
for (int i = 3; i <= 4; i++)
{
int temp = tree[index][i];
if (pic[temp] == 'x')
printTree(temp);
else
printf("%c", pic[temp]);
}
for (int i = 1; i <= 2; i++)
{
int temp = tree[index][i];
if (pic[temp] == 'x')
printTree(temp);
else
printf("%c", pic[temp]);
}
return;
}
int main()
{
int start = 0;
scanf("%d", &C);
while (C--)
{
scanf("%s", pic);
makeTree(0);
while (tree[start++][0] == 1)break;
printTree(--start);
printf("\n");
for (int i = 0; i < 1001; i++)
{
pic[i] = '\0';
tree[i][0] = tree[i][1] = tree[i][2] =
tree[i][3] = tree[i][4] = 0;
}
}
return 0;
}
9년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
cocobo123
제가 생각한 방법은
받은 문자열을 문제에 제시된 그림 (b)처럼 트리로 만들어서 풀려했어요.
그래서 tree[1001][5]를 만들어서
받은 문자열 pic[1001]이 x를 만나면 계속 타고 내려가고 반환값은 가장 바닥의 마지막 인덱스를 죽죽 반환해주어 다음으로 넘겨주는 식으로 했습니다. 그런데 계속 오답이 나오는데 혹시 짚어주실수있을까요???
9년 전