이건 자바에 스택 클래스가 있다는 걸 모르고 푼 코드이다.
여기저기...군더더기가 많아 보임
import java.io.*;
import java.util.*;
public class Main {
static int size = 0;
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0;i<N;i++) {
String str = br.readLine();
sb.append(solve(str)).append('\n');
size = 0;
}
System.out.println(sb);
}
static void push(int[] stack, int n) {
stack[size] = n;
size++;
}
static boolean empty(int[] stack) {
if(size==0) return true;
return false;
}
static boolean pop(int[] stack) {
if(size==0) {
return false;
}
stack[size-1] = 0;
size--;
return true;
}
static String solve(String str) {
int len = str.length();
int[] stack = new int[len];
for(int i=0;i<len;i++) {
char c = str.charAt(i);
if(c=='(') {
push(stack, 1);
}
else if(empty(stack)) {
return "NO";
}
else {
pop(stack);
}
}
if(empty(stack)) {
return "YES";
}
else {
return "NO";
}
}
}
그리고 이게 java.util.stack를 사용해서 푼 코드다.
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));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0;i<N;i++) {
sb.append(solve(br.readLine())).append('\n');
}
System.out.println(sb);
}
static String solve(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.empty()) {
return "NO";
}
else {
stack.pop();
}
}
if(stack.empty()) {
return "YES";
}
else {
return "NO";
}
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 10799 : 쇠막대기 JAVA 풀이 (0) | 2022.09.29 |
---|---|
[백준] 10845 : 큐 JAVA 풀이 (0) | 2022.09.19 |
[백준] 10828 : 스택 JAVA 풀이 (0) | 2022.09.19 |
[백준] 11444 : 피보나치 수 5 JAVA 풀이 (0) | 2022.09.18 |
[백준] 1629 : 곱셈 JAVA 풀이 (1) | 2022.09.17 |