코딩 테스트/백준
(백준) 9012번 : 괄호(JAVA/자바)
토자맨
2023. 4. 4. 01:16
스택 내장함수를 사용하면 훨씬 쉽게 코드를 짤 수 있다.
근데 난 자바에 익숙하지 않아서 스택 내장 함수가 있다는 걸 까먹어서 걍 배열이랑 스택 포인터를 구현해서 코드를 짰다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine()); // 몇번 입력받을지 설정
for (int i = 0; i < n; i++) {
String tmp = br.readLine();
char[] stack = new char[tmp.length()]; // 스택 생성
int sp = -1; // 스택 포인트
int m = 0; // ( : ++, ) : --
// 입력받은 String 값을 char 로 변환해서 배열에 저장
for (int j = 0; j < tmp.length(); j++) {
sp++;
stack[j] = tmp.charAt(j);
}
for (int k = 0; k < stack.length; k++) {
if (stack[k] == '(') m++;
else m--;
if (m == -1) { // '('가 항상 먼저 와야하므로 ')'가 먼저 오는 경우 반복문 탈출해서 NO 출력
break;
}
}
if (m == 0) System.out.println("YES");
else System.out.println("NO");
}
}
}