• Home

My Codegate

  • Home

백준 11899 괄호 끼워넣기 자바 문제풀이

2023/12/19 Posted by Codegate Java No Comments

문제 링크

문제 내용은 입력으로 ( ) 두 문자로 이루어진 문자열을 받아서 모두 괄호를 합치게 만들어 준다고 가정할 경우 괄호 몇 개를 추가로 투입해야 하는지를 묻고 있는데

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));
    String s = br.readLine();
    Stack<Character> stack = new Stack<>();

    int closeCount = 0;
    for (int i = 0; i < s.length(); i++) {
      if (s.charAt(i) == '(') {
        stack.push('(');
      } else {
        if (stack.size() > 0) {
          stack.pop();
        } else {
          closeCount++;
        }
      }
    }
    System.out.println(stack.size() + closeCount);
  }

}

문제를 풀어보자면 괄호를 완성하지 못한 ( 와 ) 의 갯수만 세서 합계를 반납해주면 되므로 Stack을 사용해서 (의 갯수를 저장해주고 중간에 )를 만나면 stack을 pop 시켜서 (를 한 개씩 빼주면 된다

그리고 (가 들어오기 전에 )가 먼저 들어오는 경우도 있으므로, 그런 상황에는 stack.size가 0이라면 선언해둔 int closeCount를 올려주면서 문자열을 모두 돌려준 뒤

남은 stack의 size와 closeCount를 더해 출력해주면 최소값을 구할 수 있다

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