728x90
문제
https://www.acmicpc.net/problem/9012
풀이 코드
- 여는 괄호는 스택에 넣고, 닫는 괄호면 스택에서 여는 괄호를 하나 꺼내서 괄호 쌍을 만든다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String s = br.readLine();
Stack<Character> stack = new Stack<>();
boolean isVPS = true;
for (char c : s.toCharArray()) {
if (c == '(') {
//여는 괄호이면 스택에 넣는다.
stack.push(c);
} else {
//닫는 괄호인데 스택에 여는 괄호가 없다면 괄호 쌍이 맞지 않는 것이므로 VPS X
if (stack.isEmpty()) {
isVPS = false;
break;
}
//닫는 괄호를 만나면 여는 괄호를 하나 꺼내 쌍을 맞춘다.
stack.pop();
}
}
//탐색이 완료되었음에도 불구하고 여는 괄호가 남아있다면 닫는 괄호와 쌍이 맞지 않는 것으므로 VPS X
if (!stack.isEmpty()) {
isVPS = false;
}
sb.append(isVPS ? "YES" : "NO").append("\n");
}
System.out.println(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[알고리즘/백준] 10773 제로(자바, 스택) (0) | 2021.09.30 |
---|---|
[알고리즘/백준] 10250 ACM 호텔(자바) (0) | 2021.09.30 |
[알고리즘/백준] 7568 덩치(자바) (0) | 2021.09.29 |
[알고리즘/백준] 4949 균형잡힌 세상(자바, 스택) (0) | 2021.09.29 |
[알고리즘/백준] 4153 직각삼각형(자바, 피타고라스 정리) (0) | 2021.09.28 |
댓글