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())
return 0;
if (!stack.pop().equals("("))
return 0;
break;
case "}":
if (stack.empty())
return 0;
if (!stack.pop().equals("{"))
return 0;
break;
case "]":
if (stack.empty())
return 0;
if (!stack.pop().equals("["))
return 0;
break;
case ">":
if (stack.empty())
return 0;
if (!stack.pop().equals("<"))
return 0;
break;
}
}
return 1;
}
}
금일 학습한 Stack을 이용해 해결해주는 문제.
닫는 괄호 case에서 return이 있다는 생각으로 switch 이용시 반드시 필요한 break를 넣어주지 않아 원하는 결과가 나오지 않아 애먹었다. 단순하게만 생각하지 말고 case 갈리는 지점 잘 생각해서 switch 이용할 것.
'온라인 저지 > SWEA' 카테고리의 다른 글
[SWEA/Java] 2805 농작물 수확하기 (0) | 2022.02.13 |
---|---|
[SWEA/Java] 9229 한빈이와 Spot Mart (0) | 2022.02.10 |
[SWEA/Java] 1225 암호생성기 (0) | 2022.02.08 |
[SWEA/Java] 1218 괄호 짝짓기 (0) | 2022.02.07 |
[SWEA/Java] 1873 상호의 배틀필드 (0) | 2022.02.05 |
댓글