hahn

단계별로 풀어보기(스택 - 균형잡힌 세상) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(스택 - 균형잡힌 세상)

hahn 2021. 9. 18. 15:55
728x90
반응형

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

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

http://boj.kr/c25d78d4142949a489f28beafd55abd1

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

class Main{
    
    public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String str = "";
		
		char cr;
		
		Stack<Character> st;
		
		while(true) {
			
			st = new Stack<Character>();
			
			str = br.readLine();
			if(str.equals(".")) break;
			for(int i = 0; i < str.length(); i++) {
				
				cr = str.charAt(i);
				
				if(cr == '(' || cr == '[') {
					
					st.add(cr);
					
				}
				
				if(cr == ')') if(st.empty() || st.pop() != '(') {
					
					bw.write("no");
					break;
				}
				
				if(cr == ']') if(st.empty() || st.pop() != '[') {
					
					bw.write("no");
					break;
					
				}
				
				if(i == str.length() - 1) {
					
					bw.write(st.empty() ? "yes" : "no");
					
				}
					
			}
			
			bw.newLine();

		}
		
		bw.close();
		
	}
    
}

 

여는 괄호를 만나면 스택에 넣어주고

 

닫는 괄호를 만나면 스택을 pop 하여 짝이 맞나 확인했다

 

아니면 no출력 전부 통과하면 yes 출력

 

여는 괄호만 있을 때 문제 없이 통과하므로

 

예외 생각해서 empty확인

728x90
반응형