반응형
츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 1218번 괄호 짝짓기 자바(Java)
1) 난이도 : D4
2) 문제번호 : 1218번
3) 문제 출처
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14eWb6AAkCFAYD
2. 문제
4 종류의 괄호문자들 '()', '[]', '{}', '<>' 로 이루어진 문자열이 주어진다.
이 문자열에 사용된 괄호들의 짝이 모두 맞는지 판별하는 프로그램을 작성한다.
예를 들어 아래와 같은 문자열은 유효하다고 판단할 수 있다.
아래와 같은 문자열은 유효하지 않은 문자열이다. 붉은색으로 표시된 괄호의 짝을 찾을 수 없기 때문이다.
아래 문자열은 열고 닫는 괄호의 개수는 유효하나 짝이 맞지 않는 괄호가 사용 되었기 때문에 유효하지 않다.
3. 제약사항
-
4. 입력
각 테스트 케이스의 첫 번째 줄에는 테스트케이스의 길이가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.
총 10개의 테스트케이스가 주어진다.
5. 출력
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 유효성 여부를 1 또는 0으로 표시한다 (1 - 유효함, 0 - 유효하지 않음).
6. 풀이
- 이 문제가 왜 D4?
- 물론, 스택으로 푸는것도 좋지만, 스택으로 풀지 않아도 되는 문제
- 배열에 입력값을 받고, count 배열 1개를 더 만들어서 각 열리는 기호에 맞는 기호가 오면 ++, 닫히는 기호가 있으면 -- 해서 count 배열에서 0이 아닌 다른 값이 있으면 0 출력 0만 있으면 1출력
7. 소스 코드
import java.util.Scanner;
import java.util.Stack;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int tc=1;tc<=10;tc++) {
Stack<Character> stack = new Stack<>();
int[] sign = new int[4];
boolean sig = true;
for(int i=0;i<sign.length;i++) sign[i] = 0;
//테스트케이스의 길이
int T = sc.nextInt();
//테스트케이스
String a = sc.next();
//배열에 테스트케이스 저장
char[] arr = new char[a.length()];
//입력받기
for(int i=0;i<a.length();i++) arr[i] = a.charAt(i);
for(int i=0;i<arr.length;i++) {
if(arr[i]=='(') sign[0]++;
else if(arr[i]==')') sign[0]--;
if(arr[i]=='[') sign[1]++;
else if(arr[i]==']') sign[1]--;
if(arr[i]=='{') sign[2]++;
else if(arr[i]=='}') sign[2]--;
if(arr[i]=='<') sign[3]++;
else if(arr[i]=='>') sign[3]--;
}
for(int i=0;i<sign.length;i++) {
if(sign[i]!=0) {
sig = false;
System.out.printf("#%d %d\n",tc,0);
break;
}
else if(sign[i]==0) {
sig = true;
}
}
if(sig == true) {
System.out.printf("#%d %d\n",tc,1);
}
}
}
}
반응형
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1288번 새로운 불면증 치료법 자바(Java) (0) | 2021.02.05 |
---|---|
[SW expert Academy] SWEA 3499번 퍼펙트 셔플 자바(Java) (0) | 2021.02.05 |
[SW expert Academy] SWEA 1225번 암호생성기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 5432번 쇠막대기 자르기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 5431번 민석이의 과제 체크하기 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1974번 스도쿠 검증 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1873번 상호의 배틀필드 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1954번 달팽이 숫자 자바(Java) (0) | 2021.02.03 |
최근댓글