관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 백준 9012 괄호 -스택(stack)- 자바 코틀린 본문

알고리즘/스택, 큐

[알고리즘] 백준 9012 괄호 -스택(stack)- 자바 코틀린

막무가내막내 2020. 10. 13. 02:12
728x90

www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

 

 

백준 스택 단계별 풀기의 괄호 문제입니다.

균형잡힌 올바른 괄호식인지 검사하는 문제입니다.

 

 

[Java]

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            Stack<Character> stack = new Stack<>();
            String line = sc.next();
            boolean flag = true;
            for (int j = 0; j < line.length(); j++) {
                char c = line.charAt(j);
                if (c == '(') {
                    stack.push(')');
                } else {
                    if (stack.isEmpty()) {
                        flag = false;
                        break;
                    }
                    stack.pop();
                }
            }
            if (flag && stack.isEmpty()) {
                System.out.println("YES");
            }else {
                System.out.println("NO");
            }
        }
    }
}

 

 

[Kotlin]

import java.util.*


fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    val n = sc.nextInt()
    for (i in 0 until n) {
        val stack = Stack<Char>()
        val line = sc.next()
        var flag = true
        for (element in line) {
            if (element == '(') {
                stack.push(')')
            } else {
                if (stack.isEmpty()) {
                    flag = false
                    break
                }
                stack.pop()
            }
        }
        if (flag && stack.isEmpty()) {
            println("YES")
        } else {
            println("NO")
        }
    }
}

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!

728x90
Comments