
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

import java.util.Stack;
class Solution {
boolean solution(String s) {
Stack<Character> sta = new Stack<>();
for(int i=0; i<s.length(); i++){
if(s.charAt(i) == '(') sta.push(s.charAt(i));
else if(s.charAt(i) == ')'){
if(sta.empty()) return false;
sta.pop();
}
}
return sta.empty();
}
}
처음엔 toCharArray()를 사용해 문자열을 문자형 배열로 만든 후 스택에 넣어주는 알고리즘을 사용했으나 런타임에러때문에 charAt()메서드를 사용했다.
( 기호이면 무조건 스택에 push하고 )기호이면 스택 안에 있는 괄호를 pop해준다. 이때 스택이 비어있다면 오류이기에 return false를 해준다.
스택을 사용하기 위해서는 java.util.Stack을 임포트시켜줘야한다.
스택의 초기화는 Stack<>() 변수명 = new Stack<>(); 형태로 적어준다.
pop() : top 위치의 값을 삭제하고 리턴push(값) : 값을 스택에 넣어줌. top 1증가.peek() : top 위치에 있는 값 리턴. 삭제하진 않음empty() : 스택이 비어있으면 true, 비어있지 않으면 false 리턴isEmpty() : empty( )와 같은 기능이지만 리스트, 큐 등 다양한 자료구조에 사용 가능