CharAt()
메소드를 통해서 처음부터 하나하나 탐색하기(
를 만나면 stack에 push, )
를 만나면 stack에서 pop 해주기)
를 만났을 때, pop하려고 봤더니 스택이 비어있으면, 그건 괄호 짝이 맞지 않는 것이라고 판단하여 false를 returnimport java.util.*;
class Solution {
boolean solution(String s) {
Stack <Character> stack = new Stack<>();
char open_ = '('; char close_ = ')';
for(int i=0;i<s.length();i++) {
char tmp = s.charAt(i);
if(tmp==open_)
{
stack.push(tmp); // 여는 괄호가 있다면, 스택에 넣어주기
}
else if (tmp==close_) { // 닫는 괄호가 있다면, 스택에서 요소 빼주기
if(stack.isEmpty()) return false; // 근데, 스택이 비어있다면, false
stack.pop();
}
}
if(!stack.isEmpty()) return false; // s를 다 탐색하고도 남은 게 있다면 false
return true; // 다 통과했다면 true
}
}
나도 stack에 집어넣으면서, "요소가 비어있는지"만 체크하면 되겠다 굳이 (
아니고 다른 걸 집어넣어도 되겠다. 라는 생각을 했었는데, 그냥 생각나는대로 풀었다.
다른사람 풀이를 보니까 그냥 stack 라이브러리를 사용하지 않고 int 변수 하나 선언해줘서 (
를 만나면 +1 )
를 만나면 -1를 해주는 방식으로 풀었는데, 그 방법이 훨씬 효율적일 것 같다.