본문 바로가기
온라인 저지/SWEA

[SWEA/Java] 1218 괄호 짝짓기

by ahj 2022. 2. 7.
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

댓글