ejc0628   3년 전

1. if(!stack.isEmpty() && stack.peek()=='(')

--> 정답

2. if(stack.peek()=='(' && !stack.isEmpty()) 

--> StackEmptyException발생

&& 논리연산자는 A && B 

A와 B가 모두 만족을 해야 IF문 안을 진행할 수 있는 것으로 알고있는데요.


두 조건의 순서를 바꿔도 결국 같은 소리 아닌가요?

왜 하나는 정답이고, 하나는 Exception이 발생하는지

아무리 생각해도 답을 모르겠어서 여기에 질문드립니다.

fbfbf1   3년 전

스택이 비어있는 상황에서

peek()을해서 살펴보려고 하면 아마 오류가 발생할겁니다.

그래서 먼저 비어있는 지를 확인하고 peek을 확인해줘야됩니다.

artichoke42   3년 전

부연 설명을 하자면, &&연산자의 경우, 최적화를 위해 앞의 조건이 false로 판명되면 뒤의 조건은 확인하지 않습니다. 즉 전자의 경우 stack이 empty이면 peek을 하지 않지만, 후자는 peek을 먼저 실행하기 때문에 stack이 비어있을 경우 에러가 발생하는 것입니다.

ejc0628   3년 전

아!! 그렇군요!! 정말 감사드립니다~~!

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