ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 4949번 균형잡힌 세상

SZCODE 2020. 11. 10. 20:51

www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

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

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			Stack<String> stack = new Stack();
			String s = sc.nextLine();
			if(s.equals(".")) break;
			String[] ss = s.split("");
			
			for (String str : ss) {
				// 왼쪽 소,대 괄호는 스택에 push
				if(str.equals("(") || str.equals("[")) stack.push(str);
				//오른쪽 소,대 괄호일 때 스택이 비어있지 않고 마지막 요소가 왼쪽 괄호 소,대 괄호의 짝이 맞으면 pop
				else if(str.equals(")") && !stack.isEmpty() && stack.peek().equals("(")) stack.pop();
				else if(str.equals("]") && !stack.isEmpty() && stack.peek().equals("[")) stack.pop();
				else if(str.equals(")") || str.equals("]")) stack.push(str);
			}
			//스택이 비어있으면 yes 아니면 no
			if(stack.isEmpty()) System.out.println("yes");
			else System.out.println("no");
		}

	}

}