import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Solution {
static int caseLength;
static Stack<String> stack;
static String[] eachCase;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = 10, ans;
for (int tc = 1; tc <= T; tc++) {
stack = new Stack<String>();
caseLength = Integer.parseInt(in.readLine());
eachCase = in.readLine().split("");
ans = pairing();
System.out.println("#" + tc + " " + ans);
}
}
private static int pairing() {
for (int i = 0; i < caseLength; i++) {
switch (eachCase[i]) {
case "(":
case "{":
case "[":
case "<":
stack.push(eachCase[i]);
break;
case ")":
if (!stack.empty()&&!stack.pop().equals("(")) return 0;
break;
case "}":
if (!stack.empty()&&!stack.pop().equals("{")) return 0;
break;
case "]":
if (!stack.empty()&&!stack.pop().equals("[")) return 0;
break;
case ">":
if (!stack.empty()&&!stack.pop().equals("<")) return 0;
break;
}
}
return 1;
}
}
금일 학습한 Stack을 이용해 해결해주는 문제. 생각보다 수월해서 왜 D4일까 생각해봤는데, stack의 개념을 떠올리지 못하면 쉽게 해결하기 힘들 것 같다.
닫는 괄호 case에서 return이 있다는 생각으로 switch 이용시 반드시 필요한 break를 넣어주지 않아 원하는 결과가 나오지 않아 애먹었다. 단순하게만 생각하지 말고 case 갈리는 지점 잘 생각해서 switch 이용할 것.
'온라인 저지 > SWEA' 카테고리의 다른 글
[SWEA/Java] 9229 한빈이와 Spot Mart (0) | 2022.02.10 |
---|---|
[SWEA/Java] 1218 괄호 짝짓기 (0) | 2022.02.09 |
[SWEA/Java] 1225 암호생성기 (0) | 2022.02.08 |
[SWEA/Java] 1873 상호의 배틀필드 (0) | 2022.02.05 |
[SWEA/Java] 1208 Flatten (0) | 2022.02.04 |
댓글