풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class S10799 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
Stack<Character> stack = new Stack<>();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
} else if (s.charAt(i) == ')') {
stack.pop();
if (s.charAt(i - 1) == '(') {
cnt += stack.size();
} else if (s.charAt(i - 1) == ')') {
cnt += 1;
}
}
}
System.out.println(cnt);
}
}
stack을 사용해서 (을 만났을 때만 push
)을 만나는 경우에는 전의 문자열이 (인지 )인지에 따라 조건적으로 막대기의 카운트를 올리게 했음
'Algorithm' 카테고리의 다른 글
자료구조 / 백준 17299 오등큰수 (0) | 2025.04.11 |
---|---|
자료구조 / 백준 17298 오큰수 (0) | 2025.04.09 |
자료구조 / 백준 17413 단어 뒤집기 2 (0) | 2025.04.07 |
자료구조 / 백준 10866 덱 (0) | 2025.04.06 |
자료구조 / 백준 1158 요세푸스 문제 (0) | 2025.04.05 |