스택이 비어있는 상황에서
peek()을해서 살펴보려고 하면 아마 오류가 발생할겁니다.
그래서 먼저 비어있는 지를 확인하고 peek을 확인해줘야됩니다.
4949번 - 균형잡힌 세상
부연 설명을 하자면, &&연산자의 경우, 최적화를 위해 앞의 조건이 false로 판명되면 뒤의 조건은 확인하지 않습니다. 즉 전자의 경우 stack이 empty이면 peek을 하지 않지만, 후자는 peek을 먼저 실행하기 때문에 stack이 비어있을 경우 에러가 발생하는 것입니다.
댓글을 작성하려면 로그인해야 합니다.
ejc0628 3년 전
1. if(!stack.isEmpty() && stack.peek()=='(')
--> 정답
2. if(stack.peek()=='(' && !stack.isEmpty())
--> StackEmptyException발생
&& 논리연산자는 A && B
A와 B가 모두 만족을 해야 IF문 안을 진행할 수 있는 것으로 알고있는데요.
두 조건의 순서를 바꿔도 결국 같은 소리 아닌가요?
왜 하나는 정답이고, 하나는 Exception이 발생하는지
아무리 생각해도 답을 모르겠어서 여기에 질문드립니다.