https://www.acmicpc.net/problem/2504
여는 괄호 (,[ 이면 스택에 넣어주고, 닫는 괄호면 스택의 가장 끝에 들어있는 값이 맞는 짝인지 확인해줬다.
val 값을 1로 두고 , 연산을 진행하면서 답을 구했다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_bj_2504_괄호의값 {
public static Stack<Character> stack=new Stack<Character>();
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
boolean f=false;
long ans=0;
int val=1;
for(int i=0; i<s.length(); i++) {
if(s.charAt(i)=='(') {
stack.add(s.charAt(i));
val*=2;
}
if(s.charAt(i)=='[') {
stack.add(s.charAt(i));
val*=3;
}
if(s.charAt(i)==')') {
if(stack.empty() || stack.peek()!='(') {
f=true;
break;
}if(s.charAt(i-1)=='(')
ans+=val;
stack.pop();
val/=2;
}else if(s.charAt(i)==']') {
if(stack.empty() || stack.peek()!='[') {
f=true;
break;
}
if(s.charAt(i-1)=='[')
ans+=val;
stack.pop();
val/=3;
}
}
if(f==true || !stack.empty()) {
System.out.println(0);
}else {
System.out.println(ans);
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 2563] 색종이(JAVA) (0) | 2020.03.05 |
---|---|
[백준 13460] 구슬 탈출2(JAVA) (0) | 2020.03.05 |
[백준 2174] 로봇 시뮬레이션(JAVA) (2) | 2020.03.04 |
[백준 1966] 프린터 큐(JAVA) (0) | 2020.03.04 |
[백준 2023] 신기한 소수(JAVA) (0) | 2020.03.03 |
댓글