본문 바로가기
Problem Solving/SWEA

SWEA-1218 괄호 짝짓기

by 채니_ 2021. 2. 6.

첫번째 풀었을 때


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Stack;

public class Solution {

	public static void main(String[] args) throws FileNotFoundException {
		//System.setIn(new FileInputStream("input/괄호짝짓기.txt"));
		Scanner sc = new Scanner(System.in);
		
		int T = 10;
		for (int tc = 1; tc <= T; tc++) {
			Stack<Character> stack = new Stack<>();//스택도 초기화 시켜줘야 한다~!~!!~!~~!~!~!~!!~
			int N = sc.nextInt();
			String str = sc.next();
			int result =0;
			for (int i = 0; i < str.length(); i++) {
				char c = str.charAt(i);
				if(c==')' && !stack.isEmpty()&&stack.peek()=='(') {
					stack.pop();
		
				}
				else if(c==']' && !stack.isEmpty()&&stack.peek()=='[') {
					stack.pop();
				
				}
				else if(c=='}' && !stack.isEmpty()&&stack.peek()=='{') {
					stack.pop();
			
				}
				else if(c=='>' && !stack.isEmpty()&&stack.peek()=='<') {
					stack.pop();
				}
				else 
					stack.push(c);
			}
			if(stack.isEmpty()) result = 1; 
			System.out.printf("#%d %d",tc,result);
			System.out.println();
		}
	}

}

if문마다 isEmpty를 넣었었다 그래서 코드가 좀 길다

 

두번째 풀었을 때

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Stack;

public class Gualho {

	public static void main(String[] args) throws FileNotFoundException {
		System.setIn(new FileInputStream("input/괄호짝짓기.txt"));
		Scanner sc = new Scanner(System.in);
		for (int tc = 1; tc <=10 ; tc++) {
			int res=0;
			int N = sc.nextInt();
			String str = sc.next();
			Stack <Character> stk = new Stack<Character>();
			for (int i = 0; i < str.length(); i++) {
				if(!stk.isEmpty()) { //스택이 비지 않았음
					if(str.charAt(i)==')' && stk.peek()=='(') {
						stk.pop();
					}
					else if(str.charAt(i)=='}' && stk.peek()=='{') {
						stk.pop();
					}
					else if(str.charAt(i)==']' && stk.peek()=='[') {
						stk.pop();
					}
					else if(str.charAt(i)=='>' && stk.peek()=='<') {
						stk.pop();
					}
					else stk.push(str.charAt(i));
				}
				else {
					stk.push(str.charAt(i));
				}
				
			}
			if (stk.isEmpty()) {
				res = 1;
			}
			System.out.printf("#%d %d\n",tc,res);
		}

	}

}

보기 편하게 비었을 경우에 push 비지 않았으면 그때부터 비교를 시작한다.

'Problem Solving > SWEA' 카테고리의 다른 글

SWEA- 5432 쇠막대기 자르기  (0) 2021.02.06
SWEA- 5215 햄버거 다이어트  (0) 2021.02.06
SWEA-1247 최적 경로  (0) 2021.02.06
SWEA-1954 달팽이 숫자  (0) 2021.02.06
SWEA-1210 Ladder 1  (0) 2021.02.06

댓글