edol1l1843   2년 전

위에 코드는 맞았다고 나옵니다. 아래 코드는 20%까지 갔다가 틀렸다고 나옵니다.

다른게 이중if문사용과 && 논리 연산자 사용 차이인데 같은

결과가 나오는게 맞는게 아닌가해서 질문 올립니다.

dps2   2년 전

위 코드는 s.size() && s.top() == '(' 가 아니라면 else문 즉 push을 실행시키니

비어있거나 top이 '('이 아닐때 push가 작동됩니다.

아래 코드는 push가 걸려있는 else와 연계되어있는 문장은 size이니

비어있지 않은 경우 push가 되지 않습니다.

그래서 예를들어 입력이 다음과 같다면

([)])
.

1. '('가 스택에 들어감. 현재 스택 : (

2. '['가 스택에 들어감. 현재 스택 : ([

3. ')'가 들어왔는데 스택이 비어있지 않으므로 if(s.size())에 있는 코드가 실행되는데 top이 '('이 아니므로 아무일도 일어나지 않음. 현재 스택 : ([

4. 그 후는 매치되는 부분을 정삭적으로 판단하여 ( [ ] ) 매치 된다고 파악

그래서 답은 no인데 yes가 뜹니다.

edol1l1843   2년 전

그렇네요!
친철하고 자세하게 알려주셔서 감사합니다. :)

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