공부하는 히욤이

[BOJ] 4949. 균형잡힌 세상 본문

Algorithm/BaekJoon

[BOJ] 4949. 균형잡힌 세상

히욤이 2019. 8. 4. 05:04

BaekJoon 4949. 균형잡힌 세상

* 문제의 저작권은 BOJ 및 문제를 만든 사람에게 있습니다.

 

 

 

 

 

 

[문제 접근]

 

왼쪽 괄호는 Stack에 넣고 오른쪽괄호는 stack에 top과 비교했을 때 같으면 계속 진행하고 다르면 break

오른쪽 괄호가 먼저 나왔을 경우에는 비교할 stack이 없기 때문에 stackempty Exception이 떠서

조건에 스택이 비었을 경우도 넣어주었다.

그리고 마지막으로 stack이 비었는지 확인하는데 비지 않았으면 no로 값을 주고

스택이 비었을 경우에는 yes로 주는데 만약 이전에 들고온 값이 no이면 그대로 no를 줬다

 

 

 

 

 

 

 

[코드]

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

public class Main_4949 {
	public static void main(String[] args) throws Exception, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String s = br.readLine();
		while (!s.equals(".")) {
			Stack<String> stack = new Stack<String>();
			String answer = "yes";
			for (int i = 0; i < s.length(); i++) {
				if (s.charAt(i) == '(' || s.charAt(i)=='[') {
					stack.add(s.charAt(i)+"");
				} else if (s.charAt(i) == ')') {
					if (stack.isEmpty()) {
						answer = "no";
						break;
					} else if (stack.peek().equals("(")) {
						stack.pop();
					} else {
						answer = "no";
						break;
					}
				} else if (s.charAt(i) == ']') {
					if (stack.isEmpty()) {
						answer = "no";
						break;
					} else if (stack.peek().equals("[")) {
						stack.pop();
					} else {
						answer = "no";
						break;
					}
				}  else {
					continue;
				}
			}
			s = br.readLine();
			if (!stack.isEmpty()) {
				answer = "no";
			} else {
				if (answer.equals("no")) {
					answer = "no";
				} else {
					answer = "yes";
				}
			}
			System.out.println(answer);
		}
	}
}

 

'Algorithm > BaekJoon' 카테고리의 다른 글

[BOJ] 2667. 단지번호붙이기  (0) 2019.08.22
[BOJ] 5212. 지구 온난화  (0) 2019.08.22
[BOJ] 10828. 스택  (0) 2019.08.04
[BOJ] 10989. 수 정렬하기3  (0) 2019.08.03
[BOJ] 2751. 수 정렬하기2  (0) 2019.08.03