문제에 대한 자세한 정보는 백준 | 10799번 : 쇠막대기에서 확인할 수 있다.
Stack을 사용해서 풀어도 되는 문제지만 사용하지는 않았고 문자가 '(' 인지, ')' 인지에 따라 변수를 증가, 감소시키며 풀이했다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String temp = br.readLine();
int cnt = 0;
int piece = 0;
for (int i = 0; i < temp.length(); i++) {
if(temp.charAt(i) == '(') {
cnt++;
} else { // ')'
cnt--;
if(temp.charAt(i - 1) == ')') { // 쇠막대기가 끝남
piece++;
} else { // 레이저 끝남
piece += cnt;
}
}
}
bw.write(String.valueOf(piece));
br.close();
bw.close();
}
}
메모리 : 14080KB
시간 : 104ms
그림을 보면서 직접 조각을 세보면 풀 수 있는 방법이 금방 떠오르는 문제였다.