
스택을 활용한 문제이다. 예외처리가 있어 좀 까다롭게 느낄 수 있다. 나는 전에 c언어로 스택 구현하면서 비슷한 문제를 풀어봤어서 쉽게 성공했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ4949 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Character> stack = new Stack<>();
String str;
int i, flag = 1;
str = br.readLine();
while(!str.equals(".")){
for(i=0;i<str.length();i++){
if(str.charAt(i) == '(' || str.charAt(i) == '[')
stack.push(str.charAt(i));
else if(str.charAt(i) == ')'){
if(stack.isEmpty() || stack.pop() != '('){
flag = 0;
break;
}
}
else if(str.charAt(i) == ']'){
if(stack.isEmpty() || stack.pop() != '['){
flag = 0;
break;
}
}
}
// 문장이 끝났는데 스택이 비어있지 않으면 균형이 아님
if(!stack.isEmpty())
flag = 0;
if(flag == 1)
System.out.println("yes");
else
System.out.println("no");
// 초기화
str = br.readLine();
flag = 1;
while (!stack.isEmpty())
stack.pop();
}
}
}
'코딩가딩가' 카테고리의 다른 글
| [JAVA]BOJ 2504, 괄호의 값 (1) | 2024.08.29 |
|---|---|
| [JAVA]BOJ 10799, 쇠막대기 (0) | 2024.08.25 |
| [JAVA]BOJ 5430, AC (0) | 2024.08.21 |
| [JAVA]BOJ 10866, 덱 (0) | 2024.08.20 |
| [JAVA]BOJ 1966, 프린터 큐 (0) | 2024.08.19 |