문제 출처: https://www.acmicpc.net/problem/10799
문제
이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여 왼쪽부터 순서대로 표현할 수 있다.
위 예의 괄호 표현은 그림 위에 주어져 있다.
쇠막대기는 레이저에 의해 몇 개의 조각으로 잘려지는데, 위 예에서 가장 위에 있는 두 개의 쇠막대기는 각각 3개와 2개의 조각으로 잘려지고, 이와 같은 방식으로 주어진 쇠막대기들은 총 17개의 조각으로 잘려진다.
쇠막대기와 레이저의 배치를 나타내는 괄호 표현이 주어졌을 때, 잘려진 쇠막대기 조각의 총 개수를 구하는 프로그램을 작성하시오.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
char[] temp = reader.readLine().toCharArray();
int pipeCnt = 0;
int answer = 0;
for (int i = 1, size = temp.length; i < size; i++) {
if (temp[i] == '(') {
if (temp[i - 1] == '(') pipeCnt++; // 파이프의 시작
} else if (temp[i] == ')') {
if (temp[i - 1] == ')') { // 파이프의 끝
answer += 1;
pipeCnt--;
}
else answer += pipeCnt; // 레이저 컷
}
}
System.out.println(answer);
}
}