📝 문제
백준 - 9012번: 괄호 (Silver 4)
📝 풀이
📌 작성 코드
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//테스트 케이스 개수
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
//한 줄씩 입력 받아와서 char 배열로 변환
char[] word = br.readLine().toCharArray();
//열린 괄호를 담기 위한 스택
Stack<Character> s = new Stack<>();
//for문 중간에 탈출을 했는지 체크할 boolean
boolean value = true;
for (int j = 0; j < word.length; j++) {
if (word[j] == '(') { //만약 열린 괄호라면 스택에 추가
s.add(word[j]);
} else { //닫힌 괄호라면
if (!s.isEmpty()) { //스택이 비어있지 않으면 스택에서 하나 꺼내기
s.pop();
} else { //비어있으면 올바른 문자열이 아니기 때문에 value 값 변경 후 탈출
value = false;
break;
}
}
}
//만약 s가 비어있고, value도 true면 올바른 문자열이라서 YES, 그렇지 않으면 NO 출력
bw.write((s.isEmpty() && value ? "YES" : "NO") + "\n");
}
bw.flush();
bw.close();
}
}
📌 결과