알고리즘/스택, 큐

[알고리즘] 올바른 괄호 with Java, push(),pop(),size()

VIPeveloper 2022. 3. 18. 14:54
728x90
반응형

이번 챕터는 stack, queue에 대해 공부해보는 시간이다. 스택 큐는 자신있는 알고리즘 부분중 하나인데, 새로운 것이 있으면 적극 배워볼 생각이다.

오늘 배운 것

1. 문제 풀이

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String s = kb.next();

        solution(s);
    }

    private static void solution(String s) {
        char[] chars = s.toCharArray();
        Stack<Character> stack = new Stack<>();

        for(char c : chars){
            if(c == '('){
                stack.push(c);
            }else{
                // ))))))) 반례처리
                if (stack.size() == 0) {
                    System.out.println("NO");
                    return;
                }
                stack.pop();
            }
        }
        if (stack.size() == 0) {
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}

. 강사님의 코드는 stack.size() == 0 이 아닌 isEmpty()를 이용하셨다.

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String s = kb.next();

        solution(s);
    }

    private static void solution(String s) {
        char[] chars = s.toCharArray();
        Stack<Character> stack = new Stack<>();

        for(char c : chars){
            if(c == '('){
                stack.push(c);
            }else{
                // ))))))) 반례처리
                if (stack.size() == 0) {
                    System.out.println("NO");
                    return;
                }
                stack.pop();
            }
        }
        if (stack.isEmpty()) {
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}
728x90
반응형