SWEA(SWExpertacAdemy)

[swea] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 D4 (자바)

심층코드 2025. 5. 23. 07:56

1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 D4


[문제]
4 종류의 괄호문자들 '()', '[]', '{}', '<>' 로 이루어진 문자열이 주어진다.

이 문자열에 사용된 괄호들의 짝이 모두 맞는지 판별하는 프로그램을 작성한다.

예를 들어 아래와 같은 문자열은 유효하다고 판단할 수 있다.



아래와 같은 문자열은 유효하지 않은 문자열이다. 붉은색으로 표시된 괄호의 짝을 찾을 수 없기 때문이다.



아래 문자열은 열고 닫는 괄호의 개수는 유효하나 짝이 맞지 않는 괄호가 사용 되었기 때문에 유효하지 않다.



[입력]

각 테스트 케이스의 첫 번째 줄에는 테스트케이스의 길이가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.

총 10개의 테스트케이스가 주어진다.

[출력]

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 유효성 여부를 1 또는 0으로 표시한다 (1 - 유효함, 0 - 유효하지 않음).

입력181
(({<(({{[[[[<<[[(<[[{([{{{[<[[[{<(<[[{}[]{}{}[]]]><><...
298
{(({[({([{(<[([(([<({[{{[[({{[({([<{(<[[((<{{[([{<<[{(<({[<(...
...
 
출력#1 0
#2 0
...

 

[코드]

 

import java.io.*;
import java.util.*;

public class Solution {

	public static void main(String[] args) throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		
		for (int i = 1; i <= 10; i++) {
			
			int a1=0;
			int a2=0;
			int b1=0;
			int b2=0;
			int c1=0;
			int c2=0;
			int d1=0;
			int d2=0;
			
			int N=Integer.parseInt(br.readLine());
			String s=br.readLine();
			
			for (int i2 = 0; i2 < s.length(); i2++) {
				if(s.charAt(i2)=='('){
					a1++;
				}
				else if(s.charAt(i2)==')'){
					a2++;
				}
				
				else if(s.charAt(i2)=='['){
					b1++;
				}
				else if(s.charAt(i2)==']'){
					b2++;
				}
				
				else if(s.charAt(i2)=='{'){
					c1++;
				}
				else if(s.charAt(i2)=='}'){
					c2++;
				}
				
				else if(s.charAt(i2)=='<'){
					d1++;
				}
				else if(s.charAt(i2)=='>'){
					d2++;
				}
			}
			
			if(a1==a2&&b1==b2&&c1==c2&&d1==d2) {
				System.out.println("#"+i+" "+1);
			}
			else {				
				System.out.println("#"+i+" "+0);
			}
		}
		br.close();
	}
}