Algorithm/문제 풀이
[알고리즘] 괄호 체크 (백준 9012번)
Sky Titan
2020. 8. 24. 14:51
728x90
9012번: 괄호
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)��
www.acmicpc.net
문자열 처리 중 괄호 쌍 체크의 가장 핵심은 stack의 사용이다.
- string 길이만큼 반복문을 돌며 각 자리에 있는 character를 체크한다.
- 여는 괄호 ' ( ' 가 나오는 경우
- stack에 push 한다.
- 닫힌 괄호 ' ) ' 가 나오는 경우
- stack이 비어있으면 NO 반환
- stack이 비어있지 않다면 stack에서 괄호 하나를 pop 한다.
- 여는 괄호 ' ( ' 가 나오는 경우
- 반복문 종료 후 stack에 괄호가 남아있다면 NO 반환
- 그렇지 않다면 YES 반환
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static String isCorrect(String str)
{
Stack<Character> stack = new Stack<>();
for(int i = 0;i < str.length();i++)
{
char c = str.charAt(i);
//열린 괄호
if(c == '(')
stack.push(c);
//닫힌 괄호
else
{
if(stack.isEmpty())
return "NO";
else
stack.pop();
}
}
if(!stack.isEmpty())
return "NO";
return "YES";
}
public static void main(String[] args) {
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for(int i = 0;i < N;i++)
{
String str = br.readLine();
System.out.println(isCorrect(str));
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
728x90