티스토리 뷰

문제

코드

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

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		Stack s = new Stack<>();
		StringBuilder sb = new StringBuilder();

		for (int i = 0; i < n; i++) {
			String[] input = br.readLine().split("");

			for (int j = 0; j < input.length; j++) {
				if (input[j].equals("(")) {
					// 왼쪽 괄호일 경우 push
					s.push(input[j]);
				} else if (input[j].equals(")")) {
					// 오른쪽 괄호일 경우
					if (!s.isEmpty()) {
						if (s.lastElement().equals("(")) {
							// 스택이 비어있지 않고
							// 이전 문자열이 왼쪽괄호가 존재하는 경우 pop
							s.pop();
						}
					} else {
						// 스택이 비어있다면 push
						s.push(input[j]);
					}
				}
			}

			if (s.isEmpty()) {
				// 스택 내용이 존재하지 않을 경우(모두 괄호가 매칭 된 경우)
				sb.append("YES\n");
			} else {
				// 스택 내용이 존재할 경우(괄호가 매칭되지 않은 경우)
				sb.append("NO\n");
			}
			s.clear();
		}

		System.out.print(sb);
	}
}

출처


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


'알고리즘 > 백준알고리즘(JAVA)' 카테고리의 다른 글

#1158번 : 조세퍼스 문제  (0) 2018.09.25
#1406번 : 에디터  (0) 2018.09.19
#10827번 : a^b  (0) 2018.09.16
#10757번 : 큰 수 A+B  (0) 2018.09.16
#10826번 : 피보나치 수 4  (0) 2018.09.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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 31
글 보관함