반응형
[광고 누르면 오늘의 행운 상승!!]
https://www.acmicpc.net/problem/2504
stack 과 queue를 활용해서 풀었다.
stack 에 계산한 결과 값을 넣어주어 최종적으로 stack에 숫자만 남아있게 한 후
숫자를 더해주었다.
import java.io.*;
import java.util.*;
public class 괄호의값 {
public static Stack<String> stack;
public static Queue<Integer> q;
public static int n;
public static void main(String[] args) throws Exception{
System.setIn(new FileInputStream("test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean isAble = false;
char ch[]= br.readLine().toCharArray();
stack = new Stack<>();
q = new LinkedList<>();
if((ch.length % 2) != 0) {
System.out.println(0);
return;
}
int arr[] = new int[4];
for (int i = 0; i < ch.length; i++) {
switch(ch[i]) {
case '[': arr[0]++; break;
case ']': arr[1]++; break;
case '(': arr[2]++; break;
case ')': arr[3]++; break;
}
}
if(arr[0] != arr[1] || arr[2] != arr[3]) {
System.out.println(0);
return;
}
for (int i = 0; i < ch.length; i++) {
stack.add(ch[i]+"");
String c = ch[i]+"";
if(c.equals(")") || c.equals("]")) {
isAble = true;
stack.pop();
while (!stack.isEmpty()) {
String temp = stack.pop();
int sum = 0;
if (temp.equals("(") && c.equals(")")
||(temp.equals("[") && c.equals("]"))) {
isAble = false;
while (!q.isEmpty()) {
sum += q.poll();
}
if(temp.equals("(")) n = 2;
else if(temp.equals("[")) n = 3;
if (sum == 0) sum = n;
else sum = (n * sum);
stack.add(sum+"");
break;
} else if((!temp.equals("(") && !temp.equals(")") &&
!temp.equals("[") && !temp.equals("]"))) {
isAble = false;
q.add(Integer.parseInt(temp));
}
if(isAble) {
System.out.println(0);
return;
}
}
}
}
int sum = 0;
while(!stack.isEmpty()) {
if(stack.peek().equals("[") || stack.peek().equals("]")
|| stack.peek().equals("(") || stack.peek().equals(")") ) {
System.out.println(0);
return;
}
sum+= Integer.parseInt(stack.pop());
}
System.out.println(sum);
}
}
반응형
'2. 알고리즘사이트 > 1. 백준' 카테고리의 다른 글
로봇 시뮬레이션 [백준 2174][실버1][Java] (1) | 2020.03.03 |
---|---|
프린터 큐 [백준 1966][실버3][Java] (1) | 2020.03.03 |
Puyo Puyo [백준 11559][골드5][Java] (0) | 2020.03.02 |
색종이 올려놓기 [백준 2643][골드4][Java] (0) | 2020.03.02 |
양치기 꿍 [백준 3187][실버2][Java] (0) | 2020.03.02 |