import java.util.Scanner;
import java.util.Stack;
public class Main {
public int solution(String str) {
int ans = 0;
Stack<Character> stk = new Stack<>();
for(int i = 0; i < str.length(); i++) {
char temp = str.charAt(i);
if(temp == ')'){
if(str.charAt(i-1) == '(') {
stk.pop();
ans += stk.size();
}
else if(str.charAt(i-1) == ')') {
ans++;
stk.pop();
}
}
else if(temp == '(') stk.push(temp);
}
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
- ( → 막대기 추가
- push
- ( ) → 절단
- answer += 현재 막대 개수
- ) ) → 막대기 끝
- answer +=1
출처 : 한국정보올림피아드
'Solved > 코딩테스트' 카테고리의 다른 글
토마토(BFS 활용) (0) | 2023.03.29 |
---|---|
후위연산식 문제 (Stack) (0) | 2023.03.18 |
임시반장 정하기 문제 (0) | 2023.03.17 |
Least Recently Used (0) | 2023.03.14 |
크레인 인형뽑기 (Stack) (0) | 2023.03.11 |