wogml0123456   7년 전

재귀함수를 이용해서 문제를 풀었습니다. 여는 괄호 뒤에 여는 괄호가 있을 경우(곱해야 할 경우) 함수를 한 번 더 호출해서 닫는 괄호 뒤에 닫는 괄호가 있으면 그 안에서 한 연산을 리턴하는 방식입니다.

올바르지 않은 괄호열 판단은 두 가지로 했는데요, 괄호의 짝이 잘못 지어진 경우("(]", "[)")에는 err 변수에 -1을 대입하고, 여는 괄호와 닫는 괄호의 개수가 다른 경우는 cntC와 cntR로 판단했습니다.

여기서 문제가 생기는데요, "())" 같이 뒤에 괄호가 더 많은 경우에는 str[0]인 '('에서 sum에 2를 더하고, str[1]인 ')'에서 sum을 반환해버립니다. 따라서 str[2]에 있는 ')'은 실행(?)이 되지 않고, cntC의 값은 정상적으로 0이 됩니다. 따라서 값은 2로 나와버리게 됩니다.

그런데 이 코드를 냈더니, 맞았습니다!가 뜨네요. 문제에서 "())"같은 괄호열을 올바르다고 보는 건 아닌 것 같고, 테스트 케이스에 이런 괄호열이 없는 것 같네요. 수정이 필요할 것 같습니다.

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