전체 방문자
오늘
어제
모달조아
Better than yesterday
모달조아
  • 분류 전체보기 (147)
    • PS (86)
      • BOJ (79)
      • 프로그래머스 (6)
    • 이론 (41)
      • 자료구조 (2)
      • 알고리즘 (8)
      • 데이터베이스 (1)
      • 운영체제 (1)
      • 네트워크 (3)
      • 디자인패턴 (7)
      • Java (13)
      • Spring (4)
      • JPA (1)
      • Git (1)
    • 개발 (18)
    • 프로젝트 (1)
    • 기록 (0)
      • 후기 (0)
    • etc (1)

최근 글

티스토리

hELLO · Designed By 정상우.
모달조아

Better than yesterday

PS/BOJ

BOJ 9012 괄호 [Java]

2021. 7. 18. 06:05

BOJ 9012 괄호

- 문제 링크

https://www.acmicpc.net/problem/9012

- 문제 해설

VPS가 아닌 경우는 어떤 경우가 있을지를 생각해보자.

  1. 짝이 되는 ')'가 없어 '('이 남는 경우
  2. 짝이 되는 '(' 없이 ')'이 먼저 입력되는 경우

'('가 입력될 때마다 '('를 스택에 담아주고, ')'가 입력되면 스택의 최상단에 있는 '('를 pop해주는 방식으로 동작하게 한다.
그렇게 구현하였을 경우 과정이 끝났을 때, 스택이 비어있지 않으면 1의 경우이다.
스택이 비어있을 때, ')'가 들어오는 경우가 2의 경우이다.

위 내용을 바탕으로 코드를 구현하였다.

- 코드 보기

import java.io.*;
import java.util.Stack;

public class Main
{
    static int n;

    public static String VPS(String str) throws IOException
    {
        Stack<Character> s = new Stack<>();

        for (int j = 0; j < str.length(); j++)
        {
            char c = str.charAt(j);
            if (c == '(')
                s.push(c);
            else if (c == ')')
            {
                if (!s.empty())
                {
                    if (s.peek() == '(')
                        s.pop();
                }
                else if (s.empty())
                {
                    return "NO";
                }
            }
        }

        if (s.empty())
            return "YES";
        else
            return "NO";
    }

    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n; i++)
        {
            String str = br.readLine();
            bw.write(VPS(str) + "\n");
        }

        br.close();
        bw.flush();
        bw.close();
    }
}
저작자표시 (새창열림)

'PS > BOJ' 카테고리의 다른 글

BOJ 10845 큐 [Java]  (0) 2021.07.18
BOJ 10799 쇠막대기 [Java]  (0) 2021.07.18
BOJ 10828 스택 [Java]  (0) 2021.07.18
BOJ 11004 K번째 수 [Java]  (0) 2021.07.17
BOJ 10989 수 정렬하기 3 [Java]  (0) 2021.07.16
    'PS/BOJ' 카테고리의 다른 글
    • BOJ 10845 큐 [Java]
    • BOJ 10799 쇠막대기 [Java]
    • BOJ 10828 스택 [Java]
    • BOJ 11004 K번째 수 [Java]
    모달조아
    모달조아

    티스토리툴바