백준 - 10799번 : 쇠막대기 (Silver III)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//괄호 줄 입력 받아서 char 배열로 변환
//String 배열을 쓰지 않은 이유는 '('냐 ')'냐 비교할 때
char[] pipe = br.readLine().toCharArray();
//괄호 문제여서 그냥 스택을 썼지만 그냥 int 써도 괜찮음
Stack<Character> s = new Stack<>();
//result는 쇠파이프 조각 개수
int result = 0;
for (int i = 0; i < pipe.length-1; i++) {
만약 pipe[i]가 열린 괄호이고,
if (pipe[i] == '(') {
//만약 pipe[i+1]이 닫힌 괄호면
if (pipe[i+1] == ')') {
자르는 타이밍이기 때문에 스택의 개수 더해주고 i+1은 체크할 필요 없어서 i++
result += s.size();
i++;
} else { //닫힌 괄호가 아니면 파이프의 시작 부분이기 때문에 스택에 추가
s.add('(');
}
} else { //닫힌 괄호면 스택에서 하나 빼주고 개수 하나 더해줘야 함
s.pop();
result++;
}
}
//마지막 문자열은 체크하지 않기 때문에 1 더해줘야함
System.out.println(result+1);
}
}