솜이의 데브로그

4949번 ) 균형잡힌 세상 (java) 본문

Algorithm/백준

4949번 ) 균형잡힌 세상 (java)

somsoming 2021. 9. 17. 23:10

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

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

 

문제

 

 

풀이

import java.io.*;
import java.util.*;
public class Main {
	public static String solution(String str) {
		Stack<Character> stack = new Stack<>();
	
		for(int i =0 ;i <str.length(); i++) {
			char x = str.charAt(i);
			
			if(x=='(' || x=='[') stack.push(x);
			else if(x==')') {
				if(stack.empty() || stack.pop()!='(') return "no";
			}
			else if(x==']') {
				if(stack.empty() || stack.pop()!='[') return "no";
			}
		}
	
		if(stack.empty()) return "yes";
		else return "no";
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		while(true) {
			String str = br.readLine();
			if(str.equals(".")) break;
			System.out.println(solution(str));
		}
	}

}

 

주의할 점

 

이클립스에서 돌려봤을땐 잘 돌아갔는데 계속 runtime 에러가 났다.

원인은 모르겠다.. while(true) 를 고쳐서 갑자기 되는건가 BufferedReader 로 고쳐서 되는건지;;

 

BufferedReader는 안써봐서 항상 Scanner 로 썼었는데 속도가 BufferedReader가 훨씬 빠른 것 같아서 바꿔서 써봤다.

문자열도 StringBuffer 로 바꾸면 효율이 더 좋아지는것같은데 그건 아직 어색하니까ㅎㅎ..

BufferedReader 쓰니까 예외처리도 해줘야하고 java.io 도 import 해줘야해서 신경써야할듯