Algorithm/백준 알고리즘

백준_10773 균형잡힌 세상(자바)/자료구조

미스터로즈 2021. 7. 6. 09:51

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

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

public class Back_4949 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		while(true) {
			String temp = br.readLine();
			Stack<String> arr = new Stack<String>(); 
			if(temp.charAt(0)=='.') {
				break;
			}
			for (int i = 0; i < temp.length(); i++) {
				if(temp.charAt(i)=='(' || temp.charAt(i)=='[') {
					arr.add(Character.toString(temp.charAt(i)));
					continue;
				}else if(temp.charAt(i)==')') {
					if(arr.size()!=0 && arr.peek().charAt(0)=='(') {
						arr.pop();
						continue;
					}
					arr.add(Character.toString(temp.charAt(i)));
					break;
				}
				else if(temp.charAt(i)==']') {
					if(arr.size()!=0 && arr.peek().charAt(0)=='[') {
						arr.pop();
						continue;
					}
					arr.add(Character.toString(temp.charAt(i)));
					break;
				}
				
				
			}

			if(arr.size()==0) {
				sb.append("yes\n");
			}else {
				sb.append("no\n");
			}
		}
		System.out.println(sb);
	}
}

 

- 이 문제는 자료구조를 이용하는 문제입니다. 그 중에서 Stack를 이용하면 쉽게 풀 수 있습니다.

 

- 3가지 case에 대해서 조심해야 합니다

 

- 괄호의 갯수가 안맞는 경우

Stack의 사이즈로 예외 처리를 해주면 됩니다.

 

- 괄호의 순서가 안맞는 경우

( [ ) ] 의 순서는 틀리다는 것을 예외 처리 해줘야 한다.

 

- 처음부터 ) ] 가 나오는 경우

예외 처리 했을 때 잘못된 것을 추가하지 않으면, 비어있는걸로 되서 yes가 출력이 된다.