[백준] 9012 괄호 - Java
문제를 읽고 생각해보자.
"()" 속에 VPS가 올 수 있다.
VPS끼리 concatenation은 가능하다.
처음에는 감이 안잡혔는데 알고리즘 분류가 스택이니까 스택의 관점에서 고민해봤다.
1. '(' 와 ')' 의 개수는 같아야 한다. ( "()" 는 한 세트로 움직인다 )
2. '(' 가 먼저 들어와야지 ')' 를 입력받을 수 있다.
위를 바탕으로 코드를 작성했다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int cycle = sc.nextInt();
sc.nextLine();
for (int i = 0; i < cycle; i++) {
String str = sc.nextLine();
Stack<Character> st = new Stack();
boolean check = false;
for (int j = 0; j < str.length(); j++) { // 문자열 검사
if (str.charAt(j) == '(') { // ( 들어오면 (를 스택에 넣어줌
st.push(str.charAt(j));
} else if (st.empty()) { // 스택이 비어있으면 ()
check = true;
break;
} else if (str.charAt(j) == ')') { // ) 가 들어오면 가장 위에꺼 빼기
st.pop();
}
}
// 문자열 검사 이후 스택 비어있으면 ok 남아있는게 있으면 ㄴㄴ
if (st.empty() && check) {
sb.append("NO");
sb.append("\n");
} else if (st.empty()) {
sb.append("YES");
sb.append("\n");
} else {
sb.append("NO");
sb.append("\n");
}
}
System.out.println(sb);
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1100 하얀 칸 - Java (0) | 2021.10.29 |
---|---|
[백준] 1874 스택 수열 - Java (0) | 2021.10.29 |
[백준] 1935 후위 표기식2 - Java (0) | 2021.10.29 |
[백준] 1918 후위 표기식 - Java (0) | 2021.10.29 |
[백준] 10799 쇠막대기 - Java (0) | 2021.10.29 |
댓글
이 글 공유하기
다른 글
-
[백준] 1874 스택 수열 - Java
[백준] 1874 스택 수열 - Java
2021.10.29 -
[백준] 1935 후위 표기식2 - Java
[백준] 1935 후위 표기식2 - Java
2021.10.29 -
[백준] 1918 후위 표기식 - Java
[백준] 1918 후위 표기식 - Java
2021.10.29 -
[백준] 10799 쇠막대기 - Java
[백준] 10799 쇠막대기 - Java
2021.10.29