compa513   5년 전

arr에 괄호 문자열을 입력받은 다음

func함수로 넘겨줘서 하나씩 확인하여

'('가 나오면 check++

')'가 나오면 check--

그리하여 return check를 해서 check가 0일때만 YES를 출력하도록 했습니다.

함수 내에서 check의 값이 변동될 때마다 check가 음수가 되는지를 확인하여

모든 NO case를 확인하려 했으나

고려하지 못한 반례가 아직 남아있는지 

오답 코드로 뜹니다

반례를 알려주시면 감사하겠습니다

djm03178   5년 전

무조건 51자까지 돌리면 문자열의 길이를 넘어선 위치에 우연히도 괄호 문자가 있어서 잘못된 동작을 할 수 있게 됩니다.

특히나 이렇게 반복적으로 메모리를 동적할당하고 지울 때는 이전과 똑같은 위치에 메모리가 잡힐 가능성이 크기 때문에, 이전 케이스의 잔재를 사용할 수도 있게 됩니다.

문자열의 끝을 올바르게 판단하고, 그 길이를 넘어서서 검사하지 않게 해 보세요.

compa513   5년 전

func조건문에

else { break; }를 추가했더니 해결 되었습니다 

감사합니다! :)

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