본문 바로가기

Java/백준

[JAVA] 백준 4949 균형잡힌 세상

4949번: 균형잡힌 세상 (acmicpc.net)

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

 

풀이 과정 

 

- 9012 괄호 문제랑 비슷하게 진행

-  '(' 또는 '[' 왼쪽 괄호를 만나면 스택에 푸시 

- ')' 또는 ']' 오른쪽 괄호를 만났을 때 스택이 비어 있거나 짝이 맞지 않은 경우에는 false

 짝이 맞으면 pop을 해줌

- 모든 검사를 마쳤을 때 스택에 남아 있는 요소가 있다면 false

 

 

정답

 

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


public class Main {
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        while(true)
        {
        	String s = br.readLine();
        	
        	Stack<Character>stack = new Stack<Character>();
        	boolean check=true;
        	
        	if(s.equals(".")) 
        		break;
        	
        	for(int i=0; i<s.length(); i++)
        	{
        		char c = s.charAt(i);
        		
        		//왼쪽 괄호들을 만나면 스택에 푸시 
        		if(c=='('||c=='[')
        		{
        			stack.push(c);
        		}
        		
        		//오른쪽 ')'을 만났을 때
        		else if(c==')')
        		{
        			//스택이 비어 있거나 '['인 경우에는 check false
        			if(stack.isEmpty()|| stack.peek()!='(')
        			{
        				check=false;
        			}
        			else
        			{
        				stack.pop();
        			}
        		}
        		
        		//오른쪽 ']'을 만났을 때
        		else if(c==']')
        		{
        			//스택이 비어 있거나 '('인 경우에는 check false
        			if(stack.isEmpty() || stack.peek()!='[')
        			{
        				check=false;
        			}
        			else
        			{
        				stack.pop();
        			}
        		}
        		
        	}
        	
        	
        	//모든 검사를 마쳤는데 스택에 남은 괄호가 있을 경우 
        	if(!stack.isEmpty())
        	{
        		check=false;
        	}
        	
        	
        	if(check)
        	{
        		System.out.println("yes");
        	}
        	else
        	{
        		System.out.println("no");
        	}
        	
        }
    }
}

 

'Java > 백준' 카테고리의 다른 글

[JAVA] 백준 13241 최소공배수  (1) 2024.02.10
[JAVA] 백준 12789 도키도키 간식드리미  (1) 2024.02.10
[JAVA] 백준 9012 괄호  (0) 2024.02.08
[JAVA] 백준 10773 제로  (0) 2024.02.08
[JAVA] 백준 28278 스택 2  (0) 2024.02.08