PS, 언어 공부/알고리즘 문제풀이

[JAVA] 백준 온라인 저지 9012

Emil :) 2020. 6. 25. 21:43
728x90
반응형

문제


 

 

설계


두가지 방법이 있다. 스택을 사용해서 푸는 방법과, 그냥 스택의 개념만 이용해서 푸는 방법.

스택을 사용해서 풀어보려고했는데 pop했을 때 오류가 나서 스택 개념만 이용한 cnt 변수 선언으로 풀었다..

다른 스택을 이용한 코드를 보니 한번에 이해되긴 했다만, 뭔가 찝찝했다..

 

코드


package java_practice;

import java.io.IOException;
import java.util.Scanner;

public class boj_9012 {
    
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();

        while (t-- > 0) {   //테스트 케이스만큼 반복
            String str = sc.next(); // 읽을 문자열
            int cnt = 0; // 이 카운트가 0이면 YES, 아니라면 NO를 출력
            for (int i = 0; i < str.length(); i++) { //문자열 길이만큼 i 반복해서 최종 cnt값을 계산하는구간
                if (str.charAt(i) == '(') {
                    cnt++;
                } else {
                    cnt--;
                }
                if (cnt < 0) {  //만약 계산도중 0 미만이 되면 바로 break;
                    break;
                }
            }
            if (cnt == 0)
                System.out.println("YES");
            else
                System.out.println("NO");
        }
        sc.close();
    }
}

근데 궁금한점이.. BufferedWirter를 사용해서 bw.write("NO") 라고 하면 출력이안됐다;; 왜인지 이유를 찾아봤다.

BufferedWriter는 반드시 flush()를 해줘야한단다.. 참고하자

 

 

결과


 

728x90
반응형