import java.util.Scanner;
import java.util.Stack;
public class 괄호{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int tc = 1; tc <= 10; tc++) {
int result = -1;
int len = sc.nextInt();
String str = sc.next();
Stack <Character> s = new Stack();
for(int i=0; i < str.length(); i++) {
if(str.charAt(i) == '(' || str.charAt(i) == '{' || str.charAt(i) == '[' || str.charAt(i) == '<' )
s.push(str.charAt(i));
//닫는거 들어왔을 때
else if(str.charAt(i) == ')' || str.charAt(i) == '}' || str.charAt(i) == ']' || str.charAt(i) == '>') {
if(str.charAt(i) == ')' && s.peek() != '(') {
result = 0;
break;
}
else if(str.charAt(i) == ')' && s.peek() == '(') {
s.pop();
}
if(str.charAt(i) == '>' && s.peek() != '<') {
result = 0;
break;
}
else if(str.charAt(i) == '>' && s.peek() == '<') {
s.pop();
}
if(str.charAt(i) == '}' && s.peek() != '{') {
result = 0;
break;
}
else if(str.charAt(i) == '}' && s.peek() == '{') {
s.pop();
}
if(str.charAt(i) == ']' && s.peek() != '[') {
result = 0;
break;
}
else if(str.charAt(i) == ']' && s.peek() == '[') {
s.pop();
}
}
if(result ==0)break;
}
if(!s.isEmpty()) result = 0;
else result = 1;
System.out.println("#" + tc + " " + result);
}
}
}
문제를 깔끔하게 풀려고 욕심내다가 두 번 틀렸다... 아직 내공 쌓일 때까지는 코드가 더럽더라고 그냥 더럽게 풀어야겠다
'알고리즘 문제 풀이' 카테고리의 다른 글
백준 1065 한수 (Java 자바) (0) | 2021.02.08 |
---|---|
SWEA 퍼펙트 셔플 (0) | 2021.02.05 |
SWEA 1225 암호 생성기 (0) | 2021.02.04 |
백준2164 카드2 (0) | 2021.02.04 |
SWEA) 중간값 찾기 (0) | 2021.02.03 |