본문 바로가기

ALGORITHM

백준 4949 균형잡힌 세상 (Java)

1. 문제 링크

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

균형잡힌 문자열인지 판단하는 것으로 Stack을 사용했다.

열린 괄호와 닫힌 괄호 각각에 대해 조건을 걸어서 균형이 맞지 않다면 끝이다.

끝까지 균형이 맞았을 경우에는 스택에 남은 것이 없는지 확인하여 결과를 출력했다.

 

4. 코드

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


public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		while(true) {
			String str = br.readLine();
			if(str.equals(".")) {
				break;
			}
			
			Stack<Character> stack = new Stack<>();
			boolean flag = true;
			for(int i=0;i<str.length();i++) {
				switch (str.charAt(i)) {
				case '[':
					stack.push('[');
					break;
				case '(':
					stack.push('(');
					break;
				case ')':
					if(stack.size()==0) {
						flag = false;
						break;
					}
					if(stack.peek() != '(') {
						flag = false;
					}
					stack.pop();
					break;
				case ']':
					if(stack.size()==0) {
						flag = false;
						break;
					}
					if(stack.peek() != '[') {
						flag = false;
					}
					stack.pop();
					break;
				}
				
				if(!flag) {
					break;
				}
			}
			if(flag && stack.size()==0) {
				sb.append("yes").append("\n");
			}
			else {
				sb.append("no").append("\n");
			}
		}
		System.out.println(sb);
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 13549 숨바꼭질 3 (Java)  (1) 2023.05.20
백준 21611 마법사 상어와 블리자드 (Java)  (0) 2023.05.19
백준 2310 어드벤처 게임 (Java)  (0) 2023.05.17
백준 2178 미로 탐색 (Java)  (0) 2023.05.16
백준 9019 DSLR (Java)  (0) 2023.05.15