[BOJ 10799] 쇠막대기 (java)

less than 1 minute read

:pencil2: 문제 링크 https://www.acmicpc.net/problem/10799 :pencil2:

문제 풀이

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