728x90
반응형
안녕하세요 놀이방 사장입니다.
이번 포스팅은
백준 "9012"
괄호 포스팅입니다.
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
문제설명
()()() 이렇씩으로 괄호가 짝이 맞는지 확인하는 문제이다
(()) -> 이것도 짝이 맞음
))(( -> 짝이 제대로 맞지 않음
짝이 맞는 예제는 YES , 짝이 맞지 않은 예제는 NO를 출력해주면 된다.
스택으로 구현하면 쉽게 구현 할 수 있다.
/*
* 백준 9012 괄호
* 스택 사용
* */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main{
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Character> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
for(int i = 0; i<n; i++){
String S = br.readLine();
stack.clear();
boolean chkFlag = true;
for(int j = 0; j<S.length(); j++){
if(S.charAt(j) == '('){
stack.push('(');
}else{
if(stack.isEmpty()){
chkFlag = false;
break;
}else{
stack.pop();
}
}
}
if(chkFlag && stack.isEmpty()){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
}
문자열에서 ( 이 나오면 스택에 값을 추가해준다
그리고 ) 가 나오면 스택에 값이 있는지 확인한다
왜냐하면 ) 가 먼저나오면 짝이 될 수 가 없어서 바로 for을 멈추고 NO를 출력해준다.
스택이 비어있지않으면 pop를 통해 ( 를 빼내준다.
그 후 짝이 맞으면 스택이 비어 있을 것임
그래서 마지막에 스택이 비었는지 확인해서 스택이 비어있으면 "YES" 비어있지 않다 ? 그러면 짝이 맞지 않다는 것이 때문에 "NO"를 출력해준다.
이렇게 괄호를 풀어주면 됩니다!
감사합니다~
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 4949] 균형잡힌 세상 - JAVA [스택 사용] (1) | 2024.01.14 |
---|---|
[백준 1764] 듣보잡 - JAVA [HashMap 사용] (0) | 2024.01.14 |
[백준 10816] 숫자카드2 - JAVA[이중 for문, 이분탐색, 자료구조 : 해시맵, Counting] 기법 (0) | 2024.01.14 |
[백준 10845]- 덱- JAVA [배열 구현] (1) | 2024.01.14 |
[백준 10845]- 큐- JAVA [배열 구현] (1) | 2024.01.14 |