-
[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기PS/Java 2021. 3. 10.
4 종류의 괄호문자들 '()', '[]', '{}', '<>' 로 이루어진 문자열이 주어진다.
이 문자열에 사용된 괄호들의 짝이 모두 맞는지 판별하는 프로그램을 작성한다.
import java.util.Scanner; import java.util.Stack; public class 괄호짝짓기 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); for(int tc = 1; tc <= 10; tc++) { int n = scanner.nextInt(); String str = scanner.next(); char[] c = str.toCharArray(); int result = 0; Stack<Character> stack = new Stack<>(); int k = 0; // '()', '[]', '{}', '<>' for(int i = 0; i < c.length; i++) { stack.push(c[i]); k = stack.size() - 1; if (k > 0) { if( (stack.elementAt(k - 1) == '(' && stack.elementAt(k) == ')') || (stack.elementAt(k - 1) == '{' && stack.elementAt(k) == '}') || (stack.elementAt(k - 1) == '[' && stack.elementAt(k) == ']') || (stack.elementAt(k - 1) == '<' && stack.elementAt(k) == '>') ){ stack.pop(); stack.pop(); } } } if(stack.empty()) { result = 1; } System.out.println("#" + tc + " " + result); } } }
스택을 사용하였다. 괄호를 한번에 입력하지 않고 순서대로 입력되면서 전에 입력한 괄호와 방금 입력한 괄호를 비교하여 일치하면 pop을 두번 수행한다.
'PS > Java' 카테고리의 다른 글
[백준] 2839번: 설탕 배달 (0) 2021.03.10 [SWEA] 2805. 농작물 수확하기 (0) 2021.03.10 [SWEA] 1974. 스도쿠 검증 (0) 2021.03.10 [SWEA] 1873. 상호의 배틀필드 (0) 2021.03.09 [SWEA] 5431. 민석이의 과제 체크하기 (0) 2021.03.09