Algorithm/백준
백준 | 9012번 :: 괄호
jihyun03
2020. 8. 9. 15:29
https://www.acmicpc.net/problem/9012
9012번: 괄호
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)��
www.acmicpc.net
🎈 문제 풀이
올바른 괄호는 1. 스택이 비어있고, 2. 모든 문자를 반복문에서 돌려야 한다.
🎈 소스 코드
package BaekJoon.Collection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Q9012_1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
for(int i=0; i<T; i++) {
Stack<Character> stack = new Stack<>();
String ps = br.readLine();
int len;
for(len=0; len<ps.length(); len++) {
char c = ps.charAt(len);
if(c == '(') stack.push(c);
if(c == ')') {
if (!stack.isEmpty() && stack.peek() == '(') stack.pop();
else { // 스택이 비어있는 경우 또는 잘못된 괄호인 경우
break;
}
}
// 문자는 그냥 패스
}
if(len==ps.length() && stack.size() == 0) { System.out.println("YES"); }
else System.out.println("NO"); // len != ps.length() || stack.size() > 0 인 경우
}
}
}
🎈 기억할 것
- String에서 char형으로 변환
String str = "a";
char c = str.charAt(0);
- 반복문 람다식 처리 while(T-->0) { ........ }
- 조건문을 좀 더 단순하게 처리하고자 한다면 flag를 사용하자!
boolean flag = true;
....
while(T-->0) {
......
else if(c == ')') {
if(.........
else {
flag = false;
break;
}
}