반응형
백준 Stack 문제입니다.
간단할 수도 있지만 나름 구현해보려고 하면 시간이 좀 걸리는 문제입니다.
풀이 과정은 이렇습니다.
1. '('가 들어오면 Stack에 push
2.')'가 들어오면 Stack 안에 '('가 있으면 Stack에서 pop
(이때 pop 하는 것은 ')'가 아니라 전에 Stack에 있었던 '('가 pop이 되어서 Stack 안은 텅 비게됩니다.)
2-1. ')'가 들어왔을 때 Stack이 비어있거나 (Stack이 비어있다면 이 다음에 '(', ')' 이 두 개 중 어느 것이 와도 저것은 절대 지워지지 않습니다.) Stack에 있는 맨 윗 원소가 '('가 아니라면 return "NO"
3. 입력받은 문자열을 sol 함수에 실행시켜서 sb에 저장 후 출력
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String s = br.readLine();
sb.append(sol(s)).append('\n');
}
System.out.println(sb);
}
public static String sol (String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if( c == '(') {
stack.push(c);
} else if( c == ')') {
if(stack.empty() || stack.peek() != '(') {
return "NO";
} else {
stack.pop();
}
}
}
if(stack.isEmpty()) {
return "YES";
} else {
return "NO";
}
}
}
반응형
'백준 > Data Structures' 카테고리의 다른 글
백준 17608 자바 (0) | 2022.08.23 |
---|---|
백준 2161 자바 (0) | 2022.08.22 |
백준 4949 자바 (0) | 2022.08.22 |
백준 10845 자바 (0) | 2022.08.19 |
백준 10828 자바 (0) | 2022.08.19 |