728x90
문제
https://www.acmicpc.net/problem/9012
접근 방법
- https://eungae-d.tistory.com/118 이것과 유사한 문제입니다.
- 스택을 사용하여 '(' 이것이 나오면 스택에 넣어주고, ')' 이것이 나왔을때 스택이 비어있거나 최상단이 '(' 이것이 아닐경우 NO를 리턴해줍니다.
- 만약 통과한다면 스택에 값이 있고, 스택최상단이 '(' 이것이므로 짝을 맞추어 스택에서 pop하여 제거해줍니다.
- 최종적으로 스택에 남아있는게 하나도 없으면 YES, 남아있는게 있으면 ex. ( ( ( 이런식으로 NO를 리턴해줍니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static Stack<Character> stack;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
for(int i = 0 ; i < N ; i++){
stack = new Stack<>();
String line = br.readLine();
sb.append(process(line)).append("\n");
}
}
//실행
public static String process(String line) {
for(int i = 0 ; i < line.length() ; i++){
char c = line.charAt(i);
if(c == '('){
stack.push('(');
}else if(c == ')'){
if(stack.isEmpty() || stack.peek() != '('){
return "NO";
}
stack.pop();
}
}
if(stack.isEmpty()) return "YES";
return "NO";
}
public static void main(String[] args) throws Exception {
input();
System.out.println(sb.toString());
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 10773번 : 제로 (0) | 2024.05.07 |
---|---|
[Java] 백준 10814번 : 나이순 정렬 (0) | 2024.05.07 |
[Java] 백준 7568번 : 덩치 (0) | 2024.05.06 |
[Java] 백준 4949번 : 균형잡힌 세상 (0) | 2024.05.06 |
[Java] 백준 4153번 : 직각삼각형 (0) | 2024.05.03 |