[백준] 4949 균형잡힌세상
왜 스택문제임을 빨리 깨닫지 못했을까 ㅜ
import java.util.*;
import java.io.*;
public class Main{
public static void main(String []args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
StringBuilder sb = new StringBuilder();
while(true){
if(s.equals(".")) break; // 종료조건
Stack<Character> st = new Stack<>(); // 스택 선언
boolean ok = true; // 균형 여부 저장
for(int i = 0 ; i < s.length() ; i++){
char c = s.charAt(i);
if( c == '(') st.push(c);
else if( c == ')'){
if(!st.isEmpty()){
char r = st.pop();
if( r != '(' ){
ok = false;
break;
}
}else{
ok = false;
break;
}
}else if( c == '[') st.push(c);
else if( c == ']' ){
if(!st.isEmpty()){
char r = st.pop();
if( r != '['){
ok = false;
break;
}
}else{
ok = false;
break;
}
}
}
if(!st.isEmpty()) ok = false; // 아직 남아있는 괄호가 있으면 안됨
if(ok){
sb.append("yes\n");
}else{
sb.append("no\n");
}
s = br.readLine();
}
System.out.println(sb);
}
}
Comments