티스토리 뷰

1) 생각

괄호가 올바로 짝지어지면 1 그렇지 않으면 0을 출력하라.


처음 생각

한 바퀴를 쭉 돌면서 괄호를 시작하는 경우인 "(,{,[,<" 일 경우에는 해당 배열을 +1 괄호를 닫는 경우인 "),},],>"일 경우에는 해당 배열을 -1 해주어 마지막에 음의 값을 가지고 있는 배열이 있을 경우는 0을 그렇지 않으면 1을 출력하였다.


다음 생각

주어진 문자열에서 하나의 괄호만 잘못 되었어도 0을 출력해야 한다. 따라서 -1을 하기전 해당 배열이 0이라면 바로 반복문을 종료하였다.


2) 방안

1) switch 문을 사용해서 코드가 길어져서 solve() 메소드로 따로 빼내어 처리를 해주었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.IOException;
import java.util.Scanner;
 
public class Solution {
    static StringBuilder sb;
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        for(int i=1;i<=10;i++) {
            int n = sc.nextInt();
            String t = sc.next();
            solve(n,t);
        }
    }
    
    private static int solve(int n,String t) {
        int[] arr = new int[4];
        for(int j=0;j<n;j++) {
            switch(t.charAt(j)) {
            case '(':
                arr[0]++;
                break;
            case ')':
                if(arr[0]--==0return 0;
                break;
            case '[':
                arr[1]++;
                break;
            case ']':
                if(arr[1]--==0return 0;
                break;
            case '{':
                arr[2]++;
                break;
            case '}':
                if(arr[2]--==0return 0;
                break;
            case '<':
                arr[3]++;
                break;
            case '>':
                if(arr[3]--==0return 0;
                break;                
            }
        }
        return 1;
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday