<BOJ 9012> 괄호

pastafromvictoriadesert·2024년 1월 29일
0

BOJ

목록 보기
8/12

백준 9012번 바로가기

📌자바

백엔드를 공부하고 있다 보니 지금까지는 파이썬으로 문제를 풀어왔지만 자바 언어에 익숙해지기 위해서 PS 언어를 자바로 바꾸었다.

이 문제를 풀면서 공부한 자바 버퍼리더도 있다.

📌스택

이미 알고 있는 자료구조인 스택을 이용해서 풀었고, 물론 이 문제는 이전에 파이썬으로 쉽게 풀었던 문제이다.

자바에서의 자료구조 이용에 익숙해지기 위해서 이 문제를 자바로 다시 풀었다.

📌괄호

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 testCases = Integer.parseInt(br.readLine());

        for (int i = 0; i < testCases; i++) {
            Stack<Character> psStack = new Stack<>();
            String ps = br.readLine();

            boolean answer = isTmp(i, psStack, ps);

            if (answer == true) {
                System.out.println("YES");
                continue;
            }
            System.out.println("NO");
        }
    }

    private static boolean isTmp(int i, Stack<Character> psStack, String ps) {
        for (int j = 0; j < ps.length(); j++) {
            if (ps.charAt(j) == '(') {
                psStack.push(ps.charAt(j));
            }
            if (psStack.isEmpty() && ps.charAt(j) == ')') {
                return false;
            }
            if (!psStack.isEmpty() && ps.charAt(j) == ')') {
                psStack.pop();
            }
        }

        if (psStack.isEmpty()) {
            return true;
        }
        return false;
    }
}

로직이나 알고리즘은 이미 풀었던 경험이 있고, 자료구조를 이용할 수 있다면 손쉽게 풀 수 있는 문제이다.

하지만, 문법의 장벽에 막혀서 문제를 푸는데 오래걸렸다.

처음에는 메인 메서드에 모든 로직을 때려넣었지만 큰 구조의 로직은 메서드화해서 따로 뺐다.
(인텔리제이의 자동 메서드화 기능을 이용해서 메서드의 이름이 맘에 들지 않는다.)

버퍼리더의 기능, 자바에서의 스택 이용 등을 공부할 수 있었다.

0개의 댓글

관련 채용 정보