import java.util.Scanner;
import java.util.Stack;
public class Main {
public String solution(String str) {
String answer = "YES";
//(()(()))(()
//괄호 문제는 대부분 stack
//stack에서 여는 괄호는 push 닫는 괄호는 pop
//끝났는데 남아있거나 닫아야하는데 비어있으면 NO
//끝났는데 비어있으면 YES
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()){
if(x == '(') stack.push(x);
else {
//닫는 괄호가 많은 상황
//여는 괄호를 pop 시켜줘야 짝이 맞음!
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 kb = new Scanner(System.in);
String s = kb.next();
System.out.print(T.solution(s));
}
}
'Algorithm > inflearn' 카테고리의 다른 글
★크레인 인형뽑기 (0) | 2021.09.17 |
---|---|
괄호문자제거 (0) | 2021.09.17 |
★K번째 큰 수(TreeSet) (0) | 2021.09.16 |
★모든 아나그램 찾기(Hash, sliding Window : 시간복잡도 O(n)) (0) | 2021.09.16 |
★매출액의 종류(Hash, sliding Window) (0) | 2021.09.15 |