[Algorithm] 올바른 괄호 (Java) - Stack 보단 Deque

2024. 12. 24. 15:47·Algorithm
설명

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

입력

첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

출력

첫 번째 줄에 YES, NO를 출력한다.

예시 입력 1 

(()(()))(()

예시 출력 1

NO

Stack 자료구조를 이용하는 문제는 맞지만, 현재 Stack 클래스는 사용하지 않는다고 배웠다.

스택은 자바 1버전에서 사용하던 Vector 를 상속받은 클래스라는데.. 이제는 하위 버전 호환용으로만 존재할 뿐 사용하지 않기 때문에 Deque 로 풀었다.

Deque는 스택의 push(), pop() 메서드와 Queue의 offer(), poll() 메서드 모두 지원하기 때문에 아주 효율적인 자료구조이다.

import java.util.*;

//반드시 여는 괄호가 있어야함을 인지하고 풀자
public class GualHo {

    public static void main(String[] args) {

        Deque<Character> deque = new ArrayDeque<>();

        Scanner sc = new Scanner(System.in);
        String str = sc.next();

        solution(str, deque);

    }
    
    
// 닫는 괄호는 굳이 push 할 필요가 없다
    private static void solution(String str, Deque<Character> deque) {
        char[] charArray = str.toCharArray();

        for (char c : charArray) {
            if (c == '(') {
                deque.push('(');
            } else if (c == ')') {
                if (deque.isEmpty()) {
                    System.out.println("NO");
                    return;
                }
                deque.pop();
            }
        }

        if (deque.isEmpty()) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}

'Algorithm' 카테고리의 다른 글

[Algorithm] 팰린드롬 수 - (백준 1259)  (0) 2024.12.26
[Algorithm] 피보나치 수열 (반복문, DFS)  (0) 2024.12.25
[Java] [이코테] 1이 될 때까지  (0) 2024.09.19
[Java] [프로그래머스] 햄버거 만들기  (0) 2024.09.12
[Algorithm] [백준] 항상 문제를 잘 읽어라(11382번)  (0) 2024.07.27
'Algorithm' 카테고리의 다른 글
  • [Algorithm] 팰린드롬 수 - (백준 1259)
  • [Algorithm] 피보나치 수열 (반복문, DFS)
  • [Java] [이코테] 1이 될 때까지
  • [Java] [프로그래머스] 햄버거 만들기
xuv2
xuv2
집에 가고 싶다
  • xuv2
    xuvlog
    xuv2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (172)
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (5)
      • Java (23)
      • Spring (40)
        • Core (10)
        • MVC (21)
        • Thymeleaf (9)
      • DataBase (6)
        • Database Modeling (4)
        • SQL (2)
      • HTTP (11)
      • Network (17)
      • Software Engineering (3)
      • Operating System (3)
      • Algorithm (16)
      • Project (19)
        • Web (9)
        • iOS (8)
        • Python (1)
        • Toy Project (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xuv2
[Algorithm] 올바른 괄호 (Java) - Stack 보단 Deque
상단으로

티스토리툴바