본문 바로가기

프로그래밍/알고리즘 (JAVA)

[JAVA] 백준 알고리즘 9012번 - 괄호 (Stack 활용)

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

 

 

이렇게 쉬운 문제를 무려 여섯번이나 틀리고 일곱번째에 맞았다.

자만하지 말고 디버깅 제대로 돌렸으면 금방 풀었을 텐데... 멍충멍충

 

 

import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		scan.nextLine();

		while(num --> 0) {
			boolean b = true;
			Stack<Character> stack = new Stack<>();
			String text = scan.nextLine();
			
			for(int i=0; i<text.length(); i++) {
				char c = text.charAt(i);
				if(c == '(') {
					stack.push(c);
				}else {
 					if(!stack.empty()) {
						stack.pop();
					}else {
						b=false;
						break;
					}
				}
			}
			
			if(!stack.empty()) b=false;

			if (b && stack.isEmpty()) {
                System.out.println("YES");
            }else {
                System.out.println("NO");
            }
		}
	}
}

코드가 무진장 길어졌다.

왜 안되냐고 난리치다 길어짐 ㅋㅋㅋㅋ

문제는 Stack을 반복문 안에서 선언해줬어야하는데(그게 아니면 초기화를 시켜주든가) 밖에 선언하고 계속 재활용을 해서 값이 쌓이고 있었다.. 간단한건데 귀찮아서 테스트 제대로 안해서 걸려버림

어쩐지 맞는데 틀리다고 하더라.. (맞는것도아닌데; ㅡ_ㅡ)

코드 리뷰를 제대로 하자