์ฝ๋ฉํ
์คํธ/TIL
[99ํด๋ฝ] 15์ผ์ฐจ ๋ฌธ์ : ๊ท ํ์กํ ์ธ์
moon101
2025. 2. 8. 00:13

๋ฐฑ์ค ๊ท ํ์กํ ์ธ์์ ()[] ๊ดํธ๊ฐ ๋์ค๋ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ์๋ค. ์ค์ ๋ก์ง์ isBalanced ๋ถ๋ถ์ธ๋ฐ ์ด๋ฆฐ ๊ด๋ก๋ฉด ์คํ์ ๋ฃ๊ณ ๋ซํ ๊ฐ๋ก์ด๋ฉด ์คํ์์ pop์ ํ ๋ค์ ์์ด ๋ง๋์ง ํ์ธํ๋ฉด ๋๋ค. ์ด๋ ์คํ์ด ๋น์ด์๋์ง๋ ์ ํ์ธ๋ ๋ก์ง๋ ์ ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
์๋ ์ฝ๋๋ ์งํผํฐ๊ฐ ์ด์ฌํ ์์ฑํด์ค ๋ต์ด๋ค
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
String line = br.readLine();
if (line.equals(".")) break;
sb.append(isBalanced(line) ? "yes" : "no").append("\n");
}
System.out.print(sb);
}
private static boolean isBalanced(String str) {
Stack<Character> stack = new Stack<>();
for (char ch : str.toCharArray()) {
if (ch == '(' || ch == '[') {
stack.push(ch);
} else if (ch == ')') {
if (stack.isEmpty() || stack.pop() != '(') {
return false;
}
} else if (ch == ']') {
if (stack.isEmpty() || stack.pop() != '[') {
return false;
}
}
}
return stack.isEmpty();
}
}