티스토리 뷰

Algorithm

백준(BOJ) - 9012번 : 괄호 (Java)

ellie.strong 2021. 10. 20. 12:00
728x90

9012번: 괄호 (acmicpc.net)

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

옛날에 계산기 구현할 때 괄호랑 연산자 처리할 때 스택을 썼던거 같았는데 기억이 잘 안나서,,

나는 다음과 같은 규칙을 이용하여 풀었다. 

1. '('의 개수가 항상 더 많거나 같아야한다. 

2. 최종적으로 '('와 ')'의 개수가 같아야한다. 

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

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());

        for (int i = 0; i < T; i++) {
            boolean isVPS = true;
            int left = 0;
            int right = 0;

            String str = br.readLine();

            for (int j = 0; j < str.length(); j++) {
                if (str.charAt(j) == '(')
                    left++;
                else
                    right++;

                if (left < right) {
                    isVPS = false;
                    break;
                }
            }

            if (isVPS && left == right)
                sb.append("YES\n");
            else
                sb.append("NO\n");
        }

        System.out.println(sb);
    }
}

 

Java 문자열 한 문자씩 자르기

String 클래스의 split() 메소드

String str = "Lisa";

String[] strArray = str.split("");

for (String s : strArray) {
	System.out.println(s);
}

String 클래스의 chartAt() 메소드

String str = "Lisa";

for (int i = 0; i < str.length(); i++) {
	System.out.println(str.charAt(i));
}

참고 : JAVA 문자열 한글자씩 자르기 split, charAt 예제 (tistory.com)

 

스택 이용해서 풀기!!

참고 : [백준] 9012번 : 괄호 - JAVA [자바] (tistory.com)

 

 

728x90
댓글
공지사항
최근에 올라온 글