알고리즘/스텍

[백준] 9012 : 괄호

믕비 2023. 3. 23. 15:28
반응형

풀이과정

1) 여는괄호와 닫는괄호의 짝이 맞아야 함.

2) 여는괄호일 때 push

3) 닫는괄호일 때 pop

4) 빈 스택에서 pop 하거나, 스택이 비어있지 않을 때가 VPS가 아님.

 

내가 고민한 부분

1) input의 String의 괄호를 하나씩 다루는 방법 >> char 사용.

 

import java.util.Scanner;

import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		
		for(int t = 1; t <= T; t++) {
			System.out.println(solve(sc.next()));
		}
		
	}
	
	public static String solve(String s) {
		Stack<Character> stack = new Stack<>();
		
		for(int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			
			if( c == '(') { //여는 괄호일 때 push
				stack.push(c);
			}
			else if(c == ')') { //닫는 괄호일 때
				if(stack.empty()) { //비어있으면 바로 끝
					return "NO";
				}
				else //pop
					stack.pop();
			}
		}
		
		if(stack.empty()) { //비어있으면 짝이 맞는단 뜻
			return "YES";
		}
		else //여는 괄호가 남아있으면 짝이 안 맞는단 뜻
			return "NO";
	}

}

 

자바에서 지원해주는 stack으로 풀이함.

배열이나 LinkedList로 스택 구현해서 풀이해보기.

반응형