이 문제도 한참 이상한데서 해맸네요..
문자열 처리에서는 마지막에 EOF 의미의 이스케이프 시퀸스('\0')가 들어가기 때문에
배열의 크기를 주어준 크기보다 크게해야해요!
항상 배열은 문제에 제시된 크기보다 10~20정도 크게 잡으시는게 좋아요!
그리고 아래 for문이 좀 복잡한 것 같아요. 중첩 조건문은 최대한 줄이시는게 좋아요!
저도 누굴 알려줄 고수는 아니지만, 아래와 같이 for문을 구성하면 좀 더 깔끔할 것 같습니다!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | for (char ch : string) { if (ch == '<') { while (!stack.empty(&stack)) { printf("%c", stack.pop(&stack)); } istag = false; printf("<"); } else if (ch == '>') { istag = true; printf(">"); } else if(istag == false) printf("%c", ch); else if (ch == ' ') { while (!stack.empty(&stack)) { printf("%c", stack.pop(&stack)); } printf(" "); } else if(ch == '\0') { while (!stack.empty(&stack)) { printf("%c", stack.pop(&stack)); } break; } else stack.push(&stack, ch); } | cs |
tkdrnjs67 4년 전 1
정말 입력한 결과 모두 맞는데 왜 틀릴까요..
몸도 힘들고 마음도 힘드네요;;;