ALGORITHM
[JAVA] 알고리즘 : Stack- 올바른 괄호
연듀
2022. 7. 11. 09:40
import java.util.*;
public class Main {
public String solution(String str){
String answer = "YES";
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()){
if(x=='(') stack.push(x);
else{
if(stack.isEmpty()) return "NO"; // 닫는 괄호가 많은 상황
stack.pop();
}
}
if(!stack.isEmpty()) return "NO"; // 여는 괄호가 많은 상황
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
여는 괄호일 때 스택에 푸시하고, 닫는 괄호일 때 스택에서 팝한다.
닫는 괄호를 넣을 때 스택이 비어있다면 닫는 괄호가 더 많은 상황이므로 NO를 리턴하고,
문자열을 다 돌고 난 후에 스택이 비어있지 않다면 여는 괄호가 더 많은 상황이므로 NO를 리턴한다.
반응형