Information Security Study

[백준] 9012: 괄호 본문

Programming/JAVA

[백준] 9012: 괄호

gayeon_ 2024. 1. 19. 12:58

 

위 예제처럼 괄호의 짝이 맞으면 YES, 아니면 NO를 출력한다.

 

 

 

package boj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
/*
 * 괄호 짝맞추기
 */
public class Main {

	public static void main(String[] args) throws IOException{
		// StringBuilder를 사용하여 결과를 한 번에 출력하기 위한 객체 생성
        StringBuilder sb = new StringBuilder();

        // BufferedReader를 사용하여 입력을 받기 위한 객체 생성
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 입력 횟수
        int T = Integer.parseInt(br.readLine());
        
        for(int i = 0; i < T; i++) {
        	String s = br.readLine();
        	
        	sb.append(solve(s)).append("\n");
        }
        System.out.println(sb);
	}
	
	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 == '(') {
				stack.push(c);
			}
			
			else if(c == ')') {
				if(stack.isEmpty()) {
					return "NO";
				} else {
					stack.pop();
				}
			}
			
			
		}
		
		if(stack.empty()) {
			return "YES";
		} else {
			return "NO";
		} 
		
	}

  

}

 

스택을 사용해서 풀면 된다.

'('가 들어오면 push

')'가 들어오면 pop을 하면 된다.

 

괄호의 짝이 맞는다면 스택이 비어있을 것이다.

 

'Programming > JAVA' 카테고리의 다른 글

[백준] 3986: 좋은 단어  (0) 2024.01.19
[백준] 10799: 쇠막대기  (0) 2024.01.19
[백준] 4949: 균형잡힌 세상  (0) 2024.01.18
[백준] 10828: 스택  (0) 2024.01.18
중고거래 웹 서비스 팀 프로젝트  (0) 2022.09.03