코딩테스트/백준
[백준-자바] 4949번 균형잡힌 세상 / 2022.03.17
강원대목동녀
2022. 3. 17. 21:50
https://www.acmicpc.net/problem/4949
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Character> stack = new Stack<>();
while(true){
String str = sc.nextLine();
if(str.equals(".")) { // .이 입력되면 종료
return;
}
for(int i=0; i<str.length(); i++){
char a = str.charAt(i);
if(a=='(' || a=='[' || a==')' || a==']'){ // ( [ ) ] 일 때에만 실행
if (stack.isEmpty()) // 스택이 비어있다면 무조건 push
stack.push(a);
else if (a == ')' && stack.peek() == '(') // 닫힌 괄호 ')' 일 때 스택의 맨 위가 열린 괄호 '(' 라면
stack.pop(); // 맨 위 열린 괄호 '(' pop
else if (a == ']' && stack.peek() == '[') // 닫힌 괄호 ']' 일 때 스택의 맨 위가 열린 괄호 '[' 라면
stack.pop(); // 맨 위 열린 괄호 '[' pop
else // 위의 조건문에 해당하지 않으면 push
stack.push(a);
}
}
if(stack.isEmpty()) // 스택이 비어있다면 균형적인 문자열
System.out.println("yes");
else
System.out.println("no");
stack.clear(); // 다음을 위해 stack 비우기
}
}
}