[BOJ 10799] 쇠막대기 (java)
문제 링크 https://www.acmicpc.net/problem/10799
문제 풀이
package basics_200;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ10799 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// 근접한 애를 인덱스로 찾아야함!
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<Integer>();
// 괄호 입력 받음
String s = br.readLine();
int count = 0;
// 입력 받은 괄호 순회
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
//여는 괄호일때 스택에 푸시
if (ch == '(') {
stack.push(i);
} else {
//우괄호 만났을 때
//근접한 쌍이라면 레이져
if(stack.peek()+1 == i) {
stack.pop();
//스택의 크기 = 잘린 막대기 갯수니까 더해준다
count += stack.size();
}else {
//근접한 쌍이 아닐때는 막대가 닫힌것이므로 +1 해준다.
stack.pop();
count ++;
}
}
}
//총 막대기 갯수 출력
System.out.println(count);
}
}
Comments