코딩테스트/백준

[Java] 백준 - 9012번: 괄호 (Silver IV)

배똥회장 2022. 8. 29. 10:30
728x90

 

코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

 

 

 

 

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();
	}
}

 

문제 결과 메모리 시간 코드 길이
9012 맞았습니다!! 14408 KB 136 ms 778 B

 

 

 

 

 

 

728x90