관리 메뉴

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

[알고리즘] 백준 4949 균형잡힌 세상 -스택(stack)- 자바 본문

알고리즘/스택, 큐

[알고리즘] 백준 4949 균형잡힌 세상 -스택(stack)- 자바

막무가내막내 2020. 10. 14. 22:31
728x90

www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마��

www.acmicpc.net

 

 

 

백준 스택 단계별풀기를 하고있습니다.  4단계인 균형잡힌 세상을 풀었습니다. 

 

( 또는 [ 만 들어있을 때 반례를 조심해야합니다.

 

풀이는 다음과 같습니다.

 

[Java]

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            Stack<Character> stack = new Stack<>();
            String line = sc.nextLine();
            if (line.charAt(0) == '.') {
                break;
            }
            boolean isCorrect = true;
            for (char c : line.toCharArray()) {
                if (c == '(') {
                    stack.push(')');
                } else if (c == '[') {
                    stack.push(']');
                } else if (c == ')') {
                    if (!stack.isEmpty()) {
                        if (stack.pop() != ')') {
                            System.out.println("no");
                            isCorrect = false;
                            break;
                        }
                    } else {
                        System.out.println("no");
                        isCorrect = false;
                        break;
                    }
                } else if (c == ']') {
                    if (!stack.isEmpty()) {
                        if (stack.pop() != ']') {
                            System.out.println("no");
                            isCorrect = false;
                            break;
                        }
                    } else {
                        System.out.println("no");
                        isCorrect = false;
                        break;
                    }
                }
            }
            if (isCorrect) {
                if(stack.isEmpty()){
                    System.out.println("yes");
                }else { // ex  (
                    System.out.println("no");
                }
            }
        }
    }
}

 

 

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

728x90
Comments