๋ฐ์ํ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
while(true) {
String str = bf.readLine();
if(str.equals("."))
break;
Stack<Character> s = new Stack<Character>();
String result = "";
boolean flag = true;
for(int i=0; i<str.length(); i++) {
/* ์ฌ๋๊ดํธ '(' ๋ '[' ๋ ์คํ์ ๋ฃ์ด์ค๋ค. */
if(str.charAt(i) == '(')
s.push('(');
else if(str.charAt(i) == '[')
s.push('[');
/* ๋ซ๋๊ดํธ ')' ๋ ']' ๋ ์คํ์ด ๋น์ด์๊ฑฐ๋ ์ฌ๋๊ดํธ์ ์ง์ด ์๋ง๋๊ฒฝ์ฐ -> ํ์ถํ๋ค. */
/* ์คํ์ด ๋น์ด์๋๊ฒฝ์ฐ -> ์
๋ ฅ์ด ))] ์ ๊ฐ์๊ฒฝ์ฐ, */
/* ์ง์ด ์๋ง๋๊ฒฝ์ฐ -> (([) ์ ๊ฐ์ ๊ฒฝ์ฐ, */
else if(str.charAt(i) == ')') {
if(s.isEmpty() || s.peek() != '(') {
flag = false;
break;
}
s.pop();
}
else if(str.charAt(i) == ']') {
if(s.isEmpty() || s.peek() != '[') {
flag = false;
break;
}
s.pop();
}
}
// ์คํ์ด ๋น์ด์์ง ์์ผ๋ฉด ๊ท ํ์ด ๋ง์ง ์๋ ๊ฒฝ์ฐ
if(!s.isEmpty())
flag = false;
result = (flag) ? "yes" : "no";
System.out.println(result);
}
bf.close();
}
}
ํ์ด
๊ดํธ ์ด๊ณ ๋ซ๋๋ฌธ์ -> ์คํ์ ์ฐ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
์ฌ๋๊ดํธ - '(' ๋ '[' ๊ฐ ๋ค์ด์ค๋ฉด ์คํ์ ์๋๋ค. (push)
๋ซ๋๊ดํธ - ')' ๋ ']' ๊ฐ ๋ค์ด์ค๋ฉด ์ฌ๋ ๊ดํธ์ ์ง์ผ๊ฒฝ์ฐ ์ ๊ฑฐํ๋ค. (pop)
* ๋ซ๋๊ดํธ๊ฐ ๋์์๋, ์คํ์ ์ฌ์ด์ฆ๊ฐ ๋น์ด์๊ฑฐ๋ ์ฌ๋ ๊ดํธ์ ์ง์ด ์๋๊ฒฝ์ฐ -> ์ค๋จ(๊ท ํ์กํ์ธ์ X)
- ์คํ์ ์ฌ์ด์ฆ๊ฐ ๋น์ด์๋๊ฒฝ์ฐ -> ") ] ]" ์ ๊ฐ์ด ์ฌ๋ ๊ดํธ ์์ด ๋ซ๋ ๊ดํธ๊ฐ ๋จผ์ ๋์ค๋๊ฒฝ์ฐ
- ์ง์ด ์๋ ๊ฒฝ์ฐ -> "[ [ [ ( ] ) ์ ๊ฐ์ด ๋ซ๋ ๊ดํธ ']' ์ธ๋ฐ ์ด์ ๋ฌธ์๋ '(' ์ฌ์ ์ง์ด ๋ง์ง ์์.
์ ๊ณผ์ ์ด ๋๋ํ ์คํ์ด ๋น์ด์์ผ๋ฉด -> ๊ท ํ์กํ ์ธ์
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)ํ๊ฒ๋๋ฒ(dfs) (0) | 2020.03.30 |
---|---|
[Codeforces] 1270A: Card Game (0) | 2020.03.29 |
[๋ฐฑ์ค] 5555๋ฒ: ๋ฐ์ง(๋ฌธ์์ด) (0) | 2020.03.27 |
[๋ฐฑ์ค] 2998๋ฒ: 8์ง์(๋ฌธ์์ด, ๊ตฌํ) (0) | 2020.03.27 |
[๋ฐฑ์ค] 9933๋ฒ: ๋ฏผ๊ท ์ด์ ๋น๋ฐ๋ฒํธ(๋ฌธ์์ด) (0) | 2020.03.27 |
๋๊ธ