Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

JAVA Developer Training

6. 9012번 괄호 ( java ) 본문

백준 알고리즘

6. 9012번 괄호 ( java )

Romenest 2021. 9. 2. 11:34

 

package com.example;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class training {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(br.readLine());

        while (a > 0) {
            String string = br.readLine();
            Stack<Character> stack = new Stack<>();

            boolean end = false;
            for (int i = 0; i < string.length(); i++) {
                char c = string.charAt(i); // string을 문자열로 바꾸어 문자열의 각 문자마다 번호를 새겨준다

                if (c == '(') { // 만약 들어간 문자열중 n번째의 문자가 '('일 경우
                    stack.push(c); // '(' 인 문자를 스택에 푸쉬 쌓아준다
                } else { // 만약 '(' 가 아닐경우
                    if (!stack.empty()) {
                        stack.pop(); // 스택이 비어있지 않다면 최상단을 가져다 떼어낸다 pop
                    } else {
                        end = true; // '('가 아니고 스택이 비어있을때는 end의 값을 트루로 변경
                        break; // 반복문을 탈출한다
                    }
                }
            }
            if (!stack.empty() || end) { // 반복문 탈출후 스택이 비어있지 않거나 == ((( 남아있을경우
                System.out.println("NO"); // 혹은 end값이 true가 아닐 경우 No를 불러낸다
            } else {
                System.out.println("YES"); // 그외의 경우 YES를 호출
            }
            a--; // 지정한 명령의 수가 줄어들어 0이될때 끝
        }
    }
}

 

결과는

 

'백준 알고리즘' 카테고리의 다른 글

8. 10845번 큐  (0) 2021.09.06
7. 1874번 스택 수열  (0) 2021.09.06
5. 9093번 단어 뒤집기 ( java )  (0) 2021.09.02
4. 10828번 스택 ( java )  (0) 2021.08.30
3. 2884번 알람시계 ( java )  (0) 2021.08.30