728x90
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Stack<Character> stack = new Stack<Character>();
int no = 1;//출력할 때 number
//TestCase가 안정해져있기에 while문으로 입력을 받는다
while(true) {
String str = br.readLine();
if(str.contains("-")) break;
int n = str.length();
int t = 0;
for(int i = 0; i < n; i++) {
char tmp = str.charAt(i);
if(tmp == '{')
stack.push(tmp);
else {
if(stack.isEmpty()) {
stack.push('{');
t++;
}
else
stack.pop();
}
}
t += stack.size() / 2;
sb.append((no++) + ". " + t + "\n");
stack.clear();
}
System.out.println(sb.toString());
br.close();
}
}
stack은 괄호가 잘 닫혀있는지 판단한다. stack이 비어있는데 ' } '가 들어오면 그 문자는 무조건 바꿔줘야 한다.
stack이 여는 괄호만 쌓이는데, 이때 닫히는 괄호를 만나면 pop해준다.
이 과정이 계속 반복하게 되면 여는괄호만 스택에 쌓이게 된다. 여는 괄호의 절반은 ' } '로 바꿔줘야한다.
728x90
'CS > Algorithm' 카테고리의 다른 글
HashSet - java (0) | 2021.04.11 |
---|---|
[백준:2210] 숫자판 점프 - JAVA (0) | 2021.04.11 |
[백준:3986번] 좋은 단어 - JAVA (0) | 2021.04.04 |
[백준:1935] 후위 표기식2 - JAVA (0) | 2021.04.04 |
[ 백준 10799 ] : 쇠막대기 - JAVA (0) | 2021.04.04 |