단계별로 풀어보기 > 스텍 큐 덱 > 균형잡힌 세상
https://www.acmicpc.net/problem/4949
어떤 문자열이 주어졌을 때, 소괄호, 대괄호 2종류의 괄호가 제대로 닫혔는지 확인하라.

stack을 이용하여 각각 '(', '[', ')', ']'의 경우에 따라 조건을 확립한다.
import javax.lang.model.element.UnknownAnnotationValueException;
import java.io.*;
import java.util.Scanner;
import java.util.Stack;
public class 균형잡힌_세상 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true){
String line = sc.nextLine();
if(line.equals(".")) break;
Stack<Character> stack = new Stack<>();
boolean check = true;
for(int i = 0; i<line.length(); i++){
char c = line.charAt(i);
if(c == '(' || c == '[') stack.push(c);
else if(c == ')') {
if(stack.isEmpty()){
check = false;
break;
}
if(stack.pop() != '(') {
check = false;
break;
}
} else if(c == ']') {
if(stack.isEmpty()){
check = false;
break;
}
if(stack.pop() != '[') {
check = false;
break;
}
} else {
continue;
}
}
if(stack.size() != 0) check = false;
bw.write(check ? "yes\n":"no\n");
}
bw.flush();
bw.close();
}
}
Review
import java.io.*;
import java.util.Stack;
public class 균형잡인_세상_review {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true){
Stack<Character> stack = new Stack<>();
String line = br.readLine();
if(line.equals("."))break;
boolean result = true;
for(int i=0; i<line.length(); i++){
char c = line.charAt(i);
switch(c) {
case '(':
case '[': stack.push(c);
break;
case ')': if (stack.isEmpty() || stack.pop() != '(') result = false;
break;
case ']': if (stack.isEmpty() || stack.pop() != '[') result = false;
break;
}
if(!result) break;
}
if(!stack.isEmpty()) result = false;
bw.write(result?"yes\n":"no\n");
}
bw.flush();
bw.close();
br.close();
}
}
괄호가 제대로 닫혔는지 확인해야하므로 '(', '['들이 남김 없이 닫혔는지까지 확인해야한다.
처음에는 문제를 잘 못 이해하여 stack을 2개 생성하여 만들려고 했었다.
Review
Switch문을 이용하여 좀 더 깔끔하게 풀어보고자 했다.

Review
