📆11/9
올바른 괄호
<문제 설명>
<입출력 값>
<문제 해석>
-괄호가 알맞게 짝 지어졌는지 유무를 리턴한다.
<문제 해결>
1. Stack을 이용하여 문제를 해결하려고 하였다.
2. for문을 이용하여 만약 ")" 일 때, 스택의 맨 위의 값이 ")"이고 스택이 비어있지 않는다면 스택의 맨 위의 값을 pop 시킨다.
3. 만약 ")" 이라면, 스택에 push 한다.
까지만 하고 코드를 돌렸을 때, 에러가 났다.
그 이유는
1. s의 첫번째 괄호가 ")" 인 경우
2. for문이 끝났을 때 stack이 비어있지 않는다는 경우
였다.
if 문을 이용해 위의 2가지의 경우를 구현해주었다.
다행히 잘 실행되었고 통과하였다.
<내 코드>
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
if(s.charAt(0) ==')'){
return false;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i) == ')'){
if(!stack.isEmpty() && stack.peek() == '('){
stack.pop();
}else{
return false;
}
}else{
stack.push(s.charAt(i));
}
}
if(!stack.empty()){
return false;
}
return answer;
}
}
코드를 짤 때 예외인 경우를 잘 파악하고 해결해야겠다!