문제.

풀이.
스택을 이용하여 여는 괄호는 스택에 넣고 닫는 괄호가 들어오게 되면 스택에서 팝을 한뒤에 여는괄호와 짝이 맞는지 확인한다.
코드.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class App {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String open = "([{<";
String close = ")]}>";
for(int TC=1;TC<=10;TC++){
Stack<Character> stack = new Stack<>();
int N = Integer.parseInt(br.readLine());
String str = br.readLine();
int result = 1;
for(int i=0;i<N;i++){
if(open.contains(Character.toString(str.charAt(i)))){
stack.push(str.charAt(i));
}
else if(close.contains(Character.toString(str.charAt(i)))){
if(stack.empty()){
result = 0;
break;
}
int index = close.indexOf(str.charAt(i));
char ch = stack.pop();
if(ch != open.charAt(index)){
result = 0;
break;
}
}
}
if(!stack.empty()){
result = 0;
}
sb.append("#"+TC+" "+result+"\n");
}
System.out.println(sb);
}
}
결과.

소감.
스택을 사용하는 것이 익숙하지 않아서 생각보다 오답이 많이 나왔다.. 아쉬운 부분
'코딩테스트' 카테고리의 다른 글
| 프로그래머스 : 같은 숫자는 싫어 (0) | 2024.03.19 |
|---|---|
| SWEA 1219 : 길찾기 (0) | 2024.03.19 |
| SWEA 1217 : 거듭제곱 (0) | 2024.03.11 |
| SWEA 1216 : 회문2 (0) | 2024.03.05 |
| SWEA 1215 : 회문1 (0) | 2024.03.05 |