• Home

My Codegate

  • Home

백준 9012 괄호 자바 문제풀이

2023/12/18 Posted by Codegate Java No Comments
백준 9012 괄호 자바 문제풀이

문제 링크

문제 설명은 참 쉽게 말할 수 있는걸 VPS가 어쩌고 저쩌고 어렵게 설명하는데, 결론은 입력으로 받은 ( 우측에 )가 있어서 )로 모두 닫을 수 있으면 YES 아니면 NO를 출력해주면 끝이다

()() 는 되고 ((())() 는 안된다는 거다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int count = Integer.parseInt(br.readLine());

    for (int i = 0; i < count; i++) {
      boolean succeed = true;
      String[] split = br.readLine().split("");
      Stack<String> stack = new Stack<>();
      for (int j = 0; j < split.length; j++) {
        if (split[j].equals("(")) {
          stack.push("(");
        } else {
          if (stack.size() > 0) {
            stack.pop();
          } else {
            succeed = false;
            break;
          }
        }
      }

      if (stack.size() > 0 || !succeed) {
        System.out.println("NO");
      } else {
        System.out.println("YES");
      }
    }
  }

}

이제 문제를 풀어보자면 입력으로 받은 괄호 문자열을 split으로 쪼개서 넣어준 뒤 for문을 돌리면서 Stack에 넣어주되 (가 나올 경우에는 push로 넣어주고 )가 나올 경우에는 pop으로 빼 주면 되는데

여기서 stack에 (가 들어있지 않은 상태에서 )가 나오면 바로 for문 중단하고 NO를 찍어주면 되고, (가 남아있는 경우도 있기 때문에 for문을 다 돌렸는데 stack에 (가 들어있다면 NO를, stack을 모두 사용했다면 YES를 찍어주면 끝이다

No Comments
0

Leave a Reply Cancel Reply

Introduction

My Codegate

Latest Posts

  • Google Search Console API 연동방법
  • 인텔리제이 Gradle Dependency 최신 버전 보는 방법
  • Wallet-Tracker 개발일지
  • Moralis API 자바로 호출방법
  • IntelliJ Commit 후 Push 따로 하는 방법

Categories

  • My Project (4)
  • Java (42)
  • Algorithm (161)
    • Java (152)
    • Algorithm Knowledge (3)
    • Algorithm site usage (6)
  • Vue.js (1)
  • Spring (4)
  • Docker (2)
  • IntelliJ (20)
  • Uncategorized (7)

Recent Comments

  • Codegate on Hello world!
  • A WordPress Commenter on Hello world!

© 2025 — mycodegate.com

Prev Next