on
[백준][Java] 2504번 괄호의 값(Stack)
[백준][Java] 2504번 괄호의 값(Stack)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Stack; public class Main { private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in )); private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System . out )); public static void main( String [] args) throws IOException{ char [] arr = br.readLine().toCharArray(); Stack < Character > st = new Stack < > (); int res = 0 ; int val = 1 ; boolean valOn = false ; for ( int i = 0 ; i < arr. length ; i + + ) { if (arr[i] = = '(' ) { st.push( '(' ); val * = 2 ; valOn = true ; } else if (arr[i] = = '[' ) { st.push( '[' ); val * = 3 ; valOn = true ; } else if (arr[i] = = ')' ) { if (st.isEmpty() | | st.peek() ! = '(' ) { System . out . println ( "0" ); return ; } else { st.pop(); if (valOn) { res + = val; valOn = false ; } val / = 2 ; } } else if (arr[i] = = ']' ) { if (st.isEmpty() | | st.peek() ! = '[' ) { System . out . println ( "0" ); return ; } else { st.pop(); if (valOn) { res + = val; valOn = false ; } val / = 3 ; } } } // System.out.println(res); if ( ! st.isEmpty()) res = 0 ; bw.write( String . valueOf (res)); bw.flush(); bw.close(); } } Colored by Color Scripter
from http://aig2029.tistory.com/266 by ccl(A) rewrite - 2021-09-11 09:27:24