Problem details

https://www.acmicpc.net/problem/17287

Ideas

  1. 열린 괄호는 stack에 저장하고, 닫힌 괄호가 나오면 stack에서 빼낸다.
  2. 숫자가 나왔을 때, stack에 저장된 모든 열린 괄호의 점수가 해당 숫자의 점수다.

Answer code (Java)

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

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		String n = sc.nextLine();
		Stack<Boolean> point = new Stack<Boolean>();
		int maxi = 0;
		
		for (int i = 0; i < n.length(); i++) {
			if (n.charAt(i) == '[') {
				point.add(true);
				point.add(true);
				point.add(true);
			} else if (n.charAt(i) == '{') {
				point.add(true);
				point.add(true);
			} else if (n.charAt(i) == '(') {
				point.add(true);
			} else if (n.charAt(i) == ']') {
				point.pop();
				point.pop();
				point.pop();
			} else if (n.charAt(i) == '}') {
				point.pop();
				point.pop();
			} else if (n.charAt(i) == ')') {
				point.pop();
			} else if ('0' <= n.charAt(i) && n.charAt(i) <= '9') {
				if (maxi < point.size())
					maxi = point.size();
			}
		}
		System.out.println(maxi);
	}
}

 

+ Recent posts