์ถ๋ ฅ์ ํํ๋ผ๋ ์ง, .์ฐ์ผ๋ฉด ๋์ด ๋๋ค๋ ์ง ํ๋ ๋ถ๋ถ์ด ์ ๋งคํด์ ํ๋งธ๋ค. ๋ก์ง์ ์ง๋ ๊ณผ์ ๊น์ง๋ ์์ํ๊ฒ ๊ฐ์ง๋ง, ์ค๊ฐ์ ์กฐ๊ฑด์ ํ๋ ๋์น๋ ๋ฐ๋์ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ๋ค.
- ๋ฌธ์์ด์ ํ๋์ฉ ๊ฒ์ฌํ๋ฉด์ ๊ดํธ๋ฅผ ๋ง๋ ๋ ๋ง๋ค ์กฐ๊ฑด์ ๊ฑธ์ด์ค์ผ ํ๋ค.
- ์คํ์ด ๋น์ด์์ ๊ฒฝ์ฐ
2-1. ')', ']'์ ๋ซํ ๊ดํธ๋ฅผ ๋ง๋๋ฉด ๋ฌด์กฐ๊ฑด break; โก๏ธ No์ถ๋ ฅ
2-2. ์ด์ธ์๋ ์คํ์ ๊ดํธ๋ฅผ ๋ฃ์ด์ค๋ค.- ์คํ์ด ๋น์ด์์ง ์์ ๊ฒฝ์ฐ
3-1. ์คํ์ ์ด๋ฆผ ๊ดํธ '(', '[' ์ผ ๊ฒฝ์ฐ
3-1-1. ๋ฌธ์๊ฐ ์ง์ด ๋ง๋ ๋ซํ๊ดํธ ์ ์คํ์์ pop(); ex) ( ), [ ]
3-1-2. ๋ฌธ์๊ฐ ์ด๋ฆผ๊ดํธ ์ ์คํ์ ๊ดํธ ์ถ๊ฐ ex) ((([[
3-1-3. ๋ฌธ์๊ฐ ์ง์ด ๋ค๋ฅธ ๋ซํ๊ดํธ ์ ex) ( ]. [ )- ๊ทธ๋ ๊ฒ ์ง์ด ๋ง๋ ๊ดํธ๋ฅผ ๋คํ๋ฉด ์คํ์ ๊ดํธ๊ฐ ์์ ๊ฒ.
- ์คํ์ด ๋น์๋ค๋ฉด yes์ถ๋ ฅ ์๋๋ฉด no๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ ์ค์ : ์ฌ๋ฌ ๋ฌธ์์ด์ ๋ฐ์์ผํด์ ๋งค๋ฒ stack.clear()๋ฅผ ํด์ค์ ์คํ์ ๋น์์ค์ผํ๋ค!!
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
public class bj4949_balanceWorld {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Queue<Character> queue = new LinkedList<Character>();
Stack<Character> stack = new Stack<Character>();
while (true) {
String str = scan.nextLine();
if (str.equals(".")) break;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch=='('|| ch == ')'|| ch=='[' || ch==']') {
queue.add(ch);
}
}
//(((())
while(!queue.isEmpty()) {//((
char ch = queue.poll();
//([ ])
if(stack.isEmpty()) {
if(ch ==')'||ch==']') {
stack.push(ch);
break;
}else {
stack.push(ch);
}
}else {
if(stack.peek()=='(') {
if(ch ==')') {
stack.pop();
}else if(ch == '(' || ch =='[') {
stack.push(ch);
}else {
break;
}
}else if(stack.peek()=='[') {
if(ch ==']') {
stack.pop();
}else if(ch == '(' || ch =='[') {
stack.push(ch);
}else {
break;
}
}
}
}
if(stack.isEmpty()) System.out.println("yes");
else System.out.println("no");
stack.clear();
queue.clear();
}
}
}