tkdrnjs67   4년 전

정말 입력한 결과 모두 맞는데 왜 틀릴까요..

몸도 힘들고 마음도 힘드네요;;;

dinky24   4년 전

이 문제도 한참 이상한데서 해맸네요..

문자열 처리에서는 마지막에 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 == falseprintf("%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년 전

dinky24

처음에는 단어 바꾸기 문제와 비슷해서 간단한 조건이겠거니 해서, 풀었는데 뭔가 안되고 안되다 보니, 조건이 저렇게 한개씩 들어가다보니 너무 지저분해졌네요..
피드백 너무 친절하셔서 감사드립니다. 널문자 때문이라고 생각은 안했고 혹시나해서 SIZE + 1 하니까 바로 되는 것을 볼 수 있었습니다.

tkdrnjs67   4년 전

dinky24

답변자 님이 도움을 주신 덕분에 더욱 깔끔하게 다시 짤 수 있었네요! 감사합니다ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.