https://www.acmicpc.net/problem/11899
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
Stack<Character> stack = new Stack<>();
int answer = 0;
for (char x : str.toCharArray()) {
if (x == ')') {
if(!stack.isEmpty() && stack.peek() == '(') stack.pop();
else stack.push(x);
}
else stack.push(x);
}
answer=stack.size();
System.out.println(answer);
}
}
닫는 괄호인 ' ) ' 일 경우, 스택이 비어있지 않고 마지막 스택의 원소가 열린 괄호인 ' ( ' 이면 그 ' ( ' 를 pop한다.
스택의 마지막 원소가 열린 괄호가 아니면 ' ) ' 를 push한다.
여는 괄호 ' ( ' 인 경우 그냥 push한다.
괄호 쌍을 만나면 스택에서 사라지고 짝이 안맞는 괄호들만이 스택에 남아있게 되므로 스택의 크기를 구하면 붙여야 할 괄호의 개수가 된다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 17413번- 단어 뒤집기2 (0) | 2022.07.21 |
---|---|
[JAVA] 백준 2675번- 문자열 반복 (0) | 2022.07.20 |
[JAVA] 백준 1935번- 후위 표기식2 (0) | 2022.07.19 |
[JAVA] 백준 10809번- 알파벳 찾기 (0) | 2022.07.18 |
[JAVA] 백준 18258번- 큐2 (0) | 2022.07.18 |