본문 바로가기
알고리즘/SWEA

[Java] SWEA 1218번 괄호 짝짓기

by 컴공맨 2021. 3. 8.
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이

스택을 이용해서 괄호가 옳바른 괄호인지 체크하고 만약 마지막에 스택이 비어있지 않다면 괄호의 짝이 맞지 않게되므로 정답을 0으로 바꾸어주어 해결했습니다.


코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Solution {
	public static char[] brackets;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		
		Stack<Character> stk = new Stack<Character>();
		
		for (int tc = 1; tc <= 10; ++tc) {
			int N = Integer.parseInt(br.readLine());
			
			brackets = new char[N];
			brackets = br.readLine().toCharArray();
			stk.push(brackets[0]);
			
			int answer = 1;
			for (int i = 1; i < N; ++i) {
				if (brackets[i] == ')') {
					if (stk.peek() != '(') {
						answer = 0;
						break;
					}
					else {
						stk.pop();
						continue;
					}
				}
				else if (brackets[i] == ']') {
					if (stk.peek() != '[') {
						answer = 0;
						break;
					}
					else {
						stk.pop();
						continue;
					}
				}
				else if (brackets[i] == '}') {
					if (stk.peek() != '{') {
						answer = 0;
						break;
					}
					else {
						stk.pop();
						continue;
					}
				}
				else if (brackets[i] == '>') {
					if (stk.peek() != '<') {
						answer = 0;
						break;
					}
					else {
						stk.pop();
						continue;
					}
				}
				else {
					stk.push(brackets[i]);
				}
			}
			
			if (!stk.isEmpty()) {
				answer = 0;
			}
			
			stk.clear();
			sb.append("#").append(tc).append(" ").append(answer);
			System.out.println(sb);
			sb.setLength(0);
		}
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com